Contactmoment
24 maart

slides.com/jod/pt_maa_24

Docent: Jo Devriendt

Assistent: Ann Philips

Coördinator: Joost Vennekens

voornaam.achternaam@kuleuven.be

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Contactmoment 24 maart

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Onderwerpen:

  • 13a. Zoekproblemen
  • 13b. Backtracking
  • 13c. Robotvoorbeeld

Uitsmijter om 10:50:
Win één miljoen dollar met het
Boolean satisfiability (SAT) probleem

Boolean satisfiability problem

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

Gegeven een verzameling clauses, bepaal of er een oplossing voor bestaat.

Een clause is een disjunctie ("or") van literals: Booleaanse variabelen (true of false, 1 of 0) of hun negatie ("not")

x \vee y \vee z \\ \neg x \vee y \vee z \\ y \vee \neg z \\ \neg y \vee z \\ \neg y \vee \neg z

Boolean satisfiability problem

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

x y z conflict
0 0 0 clause 1
0 0 1 clause 3
0 1 0 clause 4
0 1 1
clause 5
1 0 0 clause 2
1 0 1 clause 3
1 1 0 clause 4
1 1 1 clause 5

Simpel backtrackalgoritme

  • Kandidaten zijn alle mogelijke toekenningen van true en false aan de variabelen in de clauses
  • Oplossingen zijn de kandidaten waarvoor alle clauses waar zijn
  • Kandidaten breiden we uit door telkens een waarde 1 of 0 toe te kennen aan een variabele (in een vaste volgorde)
  • De testmethode checkt of er een clause is die niet voldaan is
  • In essentie, stel waarheidstabel op
x \vee y \vee z \\ \neg x \vee y \vee z \\ y \vee \neg z \\ \neg y \vee z \\ \neg y \vee \neg z

Boolean satisfiability problem

Programmeertechnieken [B-KUL-YI0855]

De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021

We kennen geen zoekalgoritme dat in minder dan een exponentieel aantal stappen het SAT probleem oplost

Wie kan bewijzen dat er een polynomiaal algoritme -            - bestaat, of kan bewijzen dat er géén bestaat, heeft meteen een antwoord op het
P vs NP - probleem. En dat is een Millennium Prize Problem, waaraan een miljoen dollar vasthangt.

O(n^c)
x \vee y \vee z \\ \neg x \vee y \vee z \\ y \vee \neg z \\ \neg y \vee z \\ \neg y \vee \neg z
  • Indien n variabelen, dan              kandidaten
  • Evenveel als rijen in de waarheidstabel
O(2^n)