Et binært beslutningsdiagram ( BDE ) eller et forgreningsprogram er en form for at repræsentere en boolsk funktion af variable som en rettet acyklisk graf , bestående af interne beslutningsknuder (mærket ), som hver har to børn , og to terminalknuder (mærket 0) og 1) , som hver svarer til en af de to værdier af den boolske funktion. I udenlandsk litteratur kaldes binære beslutningsdiagrammer og forgreningsprogrammer for henholdsvis binært beslutningsdiagram ( BDD ) og forgreningsprogrammer ( BP ).
En boolsk funktion kan repræsenteres som en rettet acyklisk graf , bestående af flere interne beslutningsknuder og to terminalknudepunkter, kaldet en 0-terminal node og en 1-terminal node. Hver intern beslutningsknude på et niveau er mærket med en boolsk variabel og har to børn , kaldet et junior-barn og et senior-barn. Overgangen fra en intern knude til et yngre eller ældre barn udføres afhængigt af værdien af variablen (henholdsvis 0 eller 1). For de givne værdier svarer stien fra rodknudepunktet til 1-terminalknudepunktet til, at på disse inputværdier tager den boolske funktion værdien 1.
En BDR siges at være ordnet, hvis forskellige variable optræder i samme rækkefølge i alle stier fra grafens rodknude til et af de terminale hjørner. Samtidig kan nogle variabler i stierne være fraværende, hvis reduktionsoperationen tidligere blev udført på grafen.
En BDR kaldes forkortet , hvis følgende to forkortelsesregler anvendes på grafen:
I de fleste tilfælde forstås et binært beslutningsdiagram som et reduceret ordnet binært beslutningsdiagram ( SUBDR ). Fordelen ved en reduceret ordnet BDD er, at den er kanonisk (unik) for en bestemt funktion og en given rækkefølge af variable. [1] Denne egenskab gør RUBMS nyttig til at teste funktionel ækvivalens.
Figuren til venstre viser et binært beslutningstræ (uden at anvende reduktionsreglerne) svarende til sandhedstabellen for den boolske funktion vist i samme figur . For givne inputværdier , , kan du bestemme værdien af den boolske funktion ved at bevæge dig langs træet fra træets rodknude til terminalknuderne og vælge overgangsretningen fra noden afhængigt af inputværdien . De stiplede linjer i figuren repræsenterer overgange til et yngre barn, og de kontinuerlige linjer repræsenterer overgange til et ældre barn. For eksempel, hvis inputværdierne ( , , ) er givet, skal du fra rodnoden gå langs den stiplede linje til venstre (da værdien er 0), derefter skal du gå langs de kontinuerlige linjer til højre (da værdierne er lig med 1). Som et resultat vil vi ende i en 1-terminal node, det vil sige værdien er 1.
Det binære beslutningstræ i figuren til venstre kan konverteres til et binært beslutningsdiagram ved at anvende to reduktionsregler. Den resulterende BDR er vist i figuren til højre.
Hovedideen til at skabe en sådan datastruktur var Shannon-nedbrydningen . Enhver boolsk funktion på en af inputvariablerne kan opdeles i to underfunktioner, kaldet positivt og negativt komplement, hvorfra kun én underfunktion vælges efter if-then-else princippet afhængigt af værdien af inputvariablen (hvorpå Shannon-udvidelsen blev udført). Ved at repræsentere hver sådan underfunktion som et undertræ og fortsætte udvidelsen i de resterende inputvariabler, kan der opnås et beslutningstræ , hvis reduktion vil give et binært beslutningsdiagram . Information om brugen af binære beslutningsdiagrammer eller binære forgreningsprogrammer blev først offentliggjort i 1959 i Bell Systems Technical Journal [2] [3] [4] . En BDD kaldet den kanoniske parentes blev implementeret af Mamrukov [5] i CAD til analyse af hastighedsuafhængige kredsløb. Potentialet for at skabe effektive algoritmer baseret på denne datastruktur blev undersøgt af Randal Bryant fra Carnegie Mellon University : hans tilgang var at bruge en fast rækkefølge af variabler (for en unik kanonisk repræsentation af hver boolesk funktion) og genbrug af almindelige undergrafer (for kompakthed) ). Anvendelsen af disse to nøglekoncepter gør det muligt at øge effektiviteten af datastrukturer og algoritmer til at repræsentere sæt og relationer mellem dem. [6] [7] Brugen af fælles undergrafer af flere BDR'er har ført til fremkomsten af datastrukturen Shared Reduced Ordered Binary Decision Diagram . [8] Navnet BDR bruges nu primært til netop denne datastruktur.
Donald Knuth kaldte i sin videoforelæsning Fun With Binary Decision Diagrams (BDD'er) binære beslutningsdiagrammer " en af de virkelig fundamentale datastrukturer, der er opstået i de sidste femogtyve år " og bemærkede, at Randal Bryants 1986 -publikation [6 ] , som fremhævede brugen af binære beslutningsdiagrammer til manipulation af boolske funktioner, var i nogen tid den mest citerede publikation inden for datalogi.
BDR'er bruges i vid udstrækning i computerstøttet design (CAD) systemer til syntese af logiske kredsløb og til formel verifikation .
Inden for elektronik kan hver specifik BDR (selv ikke reduceret og ikke bestilt) implementeres direkte ved at erstatte hver node med en multiplekser med to indgange og en udgang.
Størrelsen af BDR bestemmes både af en boolsk funktion og af valget af rækkefølgen af inputvariablerne. Ved kompilering af en graf for en boolesk funktion kan antallet af noder i bedste tilfælde lineært afhænge af , og i værste fald kan afhængigheden være eksponentiel med et mislykket valg af rækkefølgen af inputvariablerne. For eksempel givet en boolesk funktion Hvis du bruger rækkefølgen af variable , så skal du bruge 2 n +1 noder til at repræsentere funktionen i form af en BDD. En illustrativ BDD for en funktion af 8 variable er vist i figuren til venstre. Og hvis du bruger ordren , så kan du få en tilsvarende BDR fra 2 n +2 noder. En illustrativ BDD for en funktion af 8 variable er vist i figuren til højre.
Valget af variabel rækkefølge er afgørende, når sådanne datastrukturer anvendes i praksis. Problemet med at finde den bedste rækkefølge af variable er et NP-komplet problem. [9] Desuden er selv problemet med at finde en suboptimal rækkefølge af variabler NP-komplet , således at for enhver konstant c > 1 er størrelsen af BDD højst c gange større end den optimale. [10] Der er dog effektive heuristika til at løse dette problem.
Derudover er der funktioner, hvor størrelsen af grafen altid vokser eksponentielt i takt med, at antallet af variable stiger, uanset rækkefølgen af variablerne. Dette gælder for multiplikationsfunktioner, der angiver den store kompleksitet af faktorisering .
Forskning i binære beslutningsdiagrammer har ført til fremkomsten af mange relaterede typer grafer, såsom BMD ( Binary Moment Diagrams ), ZDD ( Zero Suppressed Decision Diagram ), FDD ( Free Binary Decision Diagrams ), PDD ( Parity decision Diagrams ) og MTBDD'er (Multiple terminal BDD'er).
Mange logiske operationer ( konjunktion , disjunktion , negation ) kan udføres direkte på BDR ved hjælp af algoritmer, der udfører grafmanipulationer i polynomisk tid. Men at gentage disse operationer mange gange, for eksempel når der dannes konjunktioner eller disjunktioner af et sæt BDD'er, kan i værste fald føre til en eksponentielt stor BDD. Dette skyldes, at alle tidligere operationer på to BDR'er generelt kan resultere i en BDR med en størrelse, der er proportional med produktet af de tidligere størrelser, så for flere BDR'er kan størrelsen stige eksponentielt.
Datastrukturer | |
---|---|
Lister | |
Træer | |
Tæller | |
Andet |