Binární momentový diagram - Binary moment diagram - Wikipedia
![]() | tento článek ne uvést žádný Zdroje.Leden 2007) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
A binární momentový diagram (BMD) je zobecněním binární rozhodovací diagram (BDD) na lineární funkce přes domény, jako jsou booleovy (jako BDD), ale také na celá čísla nebo na reálná čísla.
Mohou se vypořádat s booleovskými funkcemi se složitostí srovnatelnou s BDD, ale také některé funkce, které jsou v BDD řešeny velmi neefektivně, snadno zvládne BMD, zejména násobení.
Nejdůležitější vlastnosti BMD spočívají v tom, že stejně jako u BDD má každá funkce přesně jednu kanonickou reprezentaci a na těchto reprezentacích lze efektivně provádět mnoho operací.
Hlavní rysy, které odlišují BMD od BDD, jsou použití lineárních namísto bodových diagramů a vážené hrany.
Pravidla, která zajišťují kanoničnost zastoupení, jsou:
- Rozhodování nad proměnnými vyššími v objednávce může ukazovat pouze na rozhodnutí nad proměnnými nižšími v objednávce.
- Žádné dva uzly nemusí být identické (v normalizaci by měly být všechny odkazy na jeden z těchto uzlů nahrazeny odkazy na jiné)
- Žádný uzel nemusí mít všechny rozhodovací části ekvivalentní 0 (odkazy na takové uzly by měly být nahrazeny odkazy na jejich vždy část)
- Žádná hrana nemusí mít nulovou váhu (všechny takové hrany by měly být nahrazeny přímými odkazy na 0)
- Váhy okrajů by měly být coprime. Bez tohoto pravidla nebo jeho ekvivalentu by bylo možné, aby funkce měla mnoho reprezentací, například 2X + 2 lze vyjádřit jako 2 · (1 +X) nebo 1 · (2 + 2X).
Bodový a lineární rozklad
V bodovém rozkladu, stejně jako v BDD, ukládáme v každém bodě větve výsledek všech větví samostatně. Příklad takového rozkladu pro celočíselnou funkci (2X + y) je:
V lineárním rozkladu místo toho poskytujeme výchozí hodnotu a rozdíl:
Je snadno vidět, že druhá (lineární) reprezentace je mnohem efektivnější v případě aditivních funkcí, protože když přidáme mnoho prvků, druhá reprezentace bude mít pouze O (n) prvky, zatímco první (bodové), i při sdílení, exponenciálně mnoho.
Závaží hran
Dalším rozšířením je použití závaží pro hrany. Hodnota funkce v daném uzlu je součtem skutečných uzlů pod ním (uzel pod vždy a případně rozhodnutý uzel) krát váhy hran.
Například, lze reprezentovat jako:
- Výsledný uzel, vždy 1 × hodnota uzlu 2, pokud přidat 4 × hodnotu uzlu 4
- Vždy 1 × hodnota uzlu 3, pokud přidat 2 × hodnotu uzlu 4
- Vždy 0, pokud přidat 1 × hodnotu uzlu 4
- Vždy 1 × hodnota uzlu 5, pokud přidat +4
- Vždy 1 × hodnota uzlu 6, pokud přidat +2
- Vždy 0, pokud přidat +1
Bez vážených uzlů by bylo zapotřebí mnohem složitější reprezentace:
- Výsledný uzel, vždy hodnota uzlu 2, pokud hodnota uzlu 4
- Vždy hodnota uzlu 3, pokud hodnota uzlu 7
- Vždy 0, pokud hodnota uzlu 10
- Vždy hodnota uzlu 5, pokud přidat +16
- Vždy hodnota uzlu 6, pokud přidat +8
- Vždy 0, pokud přidat +4
- Vždy hodnota uzlu 8, pokud přidat +8
- Vždy hodnota uzlu 9, pokud přidat +4
- Vždy 0, pokud přidat +2
- Vždy hodnota uzlu 11, pokud přidat +4
- Vždy hodnota uzlu 12, pokud přidat +2
- Vždy 0, pokud přidat +1