Grundläggande logik och modellteori Kapitel 6: Binära beslutsdiagram (BDD) Henrik Björklund Umeå universitet 22. september, 2014
Binära beslutsdiagram Binära beslutsdiagram (Binary decision diagrams, BDDs) Normalformen If-then-else Reducerade och ordnade BDD:er Användningsområden
Partiella tilldelningar I den här föreläsningen kommer vi att använda substitutioner. Låt A vara en välformad formel i satslogiken (P, C). Då är A{T /p} formeln som resulterar när atomen p P ersätts med. T.ex., med så och A = (p q) (p r) A{T /p} = ( q) ( r) q A{F /q, F /r} = (p ) (p )
Logiska funktioner Varje välformad satslogisk formel A över atomerna {p 1,..., p k } kan ses som en logisk funktion f A från {F, T } k till {F, T }. Funktionen f A tilldelar den Boolska vektorn b 1,..., b k {F, T } k sanningsvärdet f (b 1,..., b k ) = A {b 1 /p 1,..., b k /p k }. Exempel: Om A = (p q) r blir f A (T, F, T ) = A {T /p, F/q, T /r} = (T F) T = T, och f A (F, T, F ) = A {F /p, T /q, F /r} = (F T ) F = F.
Binära beslutsdiagram Binära beslutsdiagram (eng. binary decision diagrams, BDD) är en användbar datatyp för att representera logiska formler. En BDD D representerar en formel A med atomerna p 1,..., p k som en riktad acyklisk graf (DAG). Noderna i D delas upp i terminaler som saknar utgående kanter och är märkta med sanningsvärdena F och T, och icke-terminaler som har utgående kanter och är märkta med p 1,..., p k. Ingen atom får förekomma mer än en gång på någon stig från roten till en terminal. Varje icke-terminal v har exakt en hög (heldragen) och en låg (streckad) utgående kant. De motsvarar resultatet av att tilldela atomen som märker v sanningsvärdet T respektive F.
Binära beslutsdiagram Formeln A = (p q) r kan representeras av det binära beslutsträdet p q q r r r r T T F T F T T T Ett beslutsträd är ett trivialt beslutsdiagram
Binära beslutsdiagram Genom att slå ihop identiska delträd får vi en mer kompakt BDD för A. p q q r r T F
Normalformen if-then-else Låt A B; C vara if-then-else operatorn vars semantik är A B; C = (A B) ( A C). Formeln A B; C är alltså sann om både A och B är sanna, eller om A är falsk och C sann. Delformeln A kallas här för ett testuttryck. Alla formler kan skrivas om till att bara innehålla operatorerna if-then-else, T, och F. Detta kan dessutom göras så att varje symbol är ett testuttryck om och endast om den är en atom. Den här normalformen kallas if-then-else normalformen (INF). Exempel: Formeln p kan skrivas som p F; T, medan formeln p q blir p (q T ; F); (q F; T ). Kontrollera gärna själv att sanningstabellerna stämmer överens.
Shannons expansion Låt A vara en formell som innehåller atomen p. Följande ekvivalens kallas för Shannons expansion av A med avseende på p. A p A {T /p}; A {F /p}. Genom att använda Shannons expansion kan vi skriva om en godtycklig formel A på INF: Om A saknar atomer så är formeln antingen ekvivalent med F eller T, vilka båda är formler på INF. Annars väljer vi en atomer p som förekommer i A och skapar Shannon-expansionen p A {T /p}; A {F/p}. Eftersom både A {T /p} och A {F/p} innehåller en atom mindre än A så kan vi rekursivt skriva om dessa till INF. Låt oss kalla resultaten för A T och A F. INF formeln för A blir då p A T ; A F.
If-then-else normalform Sats: För varje satslogisk formel finns en ekvivalent formel på INF. Genom att skriva om en formel A till INF och rita den resulterande formeln som en graf kan vi hitta ett beslutsträd för A. Om vi sen identifierar alla terminaler märkta med F och alla terminaler märkta med T har vi sen ett enkelt BDD för A.
Ordnade BBD:er En BDD är ordnad om det finns någon linjär ordning p 1 < p 2 <... < p k av atomerna i D som respekteras av alla stigar genom D. I en ordnad BDD finns det därmed inte två atomer p 1 och p 2 och två stigar π 1 och π 2 så att p 1 förekommer före p 2 på stig π 1, men p 2 förekommer före p 1 på stig π 2. Om vi väljer en linjär ordning på atomerna innan vi börjar omskrivningen till INF och sen följer den konsekvent i alla rekursiva anrop, då blir resultatet en ordnad BDD.
Reducerade BBD:er En BDD D är reducerad om (i) det inte finns två olika noder i D som är märkta med samma atom, vars låga kant går till samma nod, och vars höga kant går till samma nod, och (ii) det inte finns någon nod vars höga och låga kant går till samma nod. I en reducerad BDD är därmed följande strukturer förbjudna: p p p
Egenskaper hos ROBDD:er En ROBDD för A kan skapas genom att göra en Shannon-expansion för att få ett beslutsträd, identifiera alla noder markerade med T, identifera alla noder markerade med F, och så länge vilkor (i) och (ii) på föregående sida inte är uppfyllda, slå ihop noder som bryter mot (i) och ta bort noder som bryter mot (ii). Lemma: För varje logisk funktion f : {F, T } k {F, T } finns det exakt en ROBDD med atomordingen p 1 < p 2 <... < p k som representerar f. Lemmat gäller i synnerhet för den konstanta funktionen T, nämligen en graf som bara består av noden T. Givet en ROBDD för en formel A kan vi därför testa i konstant tid om formeln är en tautologi samt om den är satisfierbar (hur?).
Ordningen spelar roll Två BDD:er för formeln (p 1 q 1 ) (p 2 q 2 ), den vänstra med ordningen p 1 < p 2 < q 1 < q 2, den högra med ordningen p 1 < q 1 < p 2 < q 2. p 1 p 1 p 2 p 2 q 1 q 1 q 1 q 1 q 1 q 1 p 2 q 2 q 2 q 2 q 2 T F F T
Att applicera operationer Vi vet hur vi kan konstruera en (RO)BDD, men det är inte alltid smidigt. Om vi har två formler, på formen p A 1 ; A 2 och p B 1 ; B 2 där p är en atom och A 1, A 2, B 1, B 2 är godtyckliga formler, är för alla konnektiv. (p A 1 ; A 2 ) (p B 1 ; B 2 ) p (A 1 B 1 ); (A 2 B 2 ) Denna ekvivalens kan vi använda för att bygga upp en ROBDD botten-upp, samt för att effektivt manipulera formler redan konverterade till ROBDDer.
Algoritmer Det finns många poänger med (RO)BDDer: Algoritmer: Applicera logiska operationer till (RO)BDDer Be om en godtycklig modell (linjär tid) Be om alla modeller (lång tid) Beräkna hur många modeller som existerar Att de är unika gör att man kan sortera och söka bland ekvivalensklasser av formler på ett praktiskt sätt Dock finns det inte alltid en liten (RO)BDD (NP-svårighet).
(RO)BDDer i praktiken När BDDer nämns i litteraturen avses nästan alltid ROBDDer. Närhelst man vill representera och arbeta med logiska formler i program är ROBDDer ett bra alternativ. Typiskt exempel är CAD-mjukvara för att syntetisera logiska kretsar från specifikationer, och inom området formell verifikation för visa att algoritmer är korrekta.
Källor och kommentarer Denna oh-serie är baserad på texten H. Reif Andersson. An Introduction to Binary Decision Diagrams, Lecture Notes, IT University of Copenhagen, Copenhagen. 1999.