Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver.

Liknende presentasjoner


Presentasjon om: "Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver."— Utskrift av presentasjonen:

1 Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver.

2 Kai A. Olsen, BIBSYS, 13.11.2016 2 Oppgaven Vi skal sette inn 1 til 9 i de hvite feltene Men det samme tallet skal bare forekomme en gang i en rad, en kolonne eller i hver 3x3 firkant.

3 Kai A. Olsen, BIBSYS, 13.11.2016 3 Metode Vi forsøker å sette inn ett 1-tall i første felt. Kontrollerer om dette går. Det gjør det ikke, det er allerede et 1-tall i raden og kolonnen. Forsøker med et 2-tall. Det går. Forsøker så med et 1-tall i neste felt. Går ikke. Heller ikke 2, 3, 4. Men 5 går. Slik fortsetter vi til vi ikke finner noen løsning. Da må vi backtracke. F.eks. om vi ikke hadde funnet noe gyldig tall for felt to måtte vi revurdere løsningen for felt en, og forsøkt neste mulige tall her.

4 Kai A. Olsen, BIBSYS, 13.11.2016 4 Brute force Metoden kalles rå regnekraft (brute force). Vi forsøker alle muligheter, går rett på uten å forsøke å være smart. For enkle problemer som dette kan vi finne beste løsning, for mer komplekse (som i sjakk) må vi kanskje bare antyde en vei til løsning. Kan brukes på spill, som her, men også på mange anvendelser i det virkelige liv.

5 Kai A. Olsen, BIBSYS, 13.11.2016 5 Implementering Vi ser at vi har et symetrisk problem: Forsøk løsninger 1 til 9 i første felt For første løsning gå videre til neste felt. Forsøk 1 til 9 her. Dersom ingen gir en løsning gå tilbake til forrige felt og forsøk neste løsning her. Vi kan implementere dette med rekursjon, altså en funksjon som kaller seg selv.

6 Kai A. Olsen, BIBSYS, 13.11.2016 6 Rekursjon Forsøk prøver alle mulige tall i feltet rad, col om feltet er åpent. Låste felt har verdier gitt i oppgaven og kan da ikke endres. For å spare tid har vi på forhånd registrert hvilke tall som er ”mulige” (altså som ikke kolliderer med låste verdier) Dersom vi er kommet forbi siste felt returnerer vi true. Finner vi en løsning forsøker vi neste felt (rekursivt kall markert med rødt). Finnes ingen løsning returnerer vi false.

7 Kai A. Olsen, BIBSYS, 13.11.2016 7 Avansert Rekursjon er en avansert teknikk. En skal ha meget god forståelse for hav som foregår for å selv kunne lage rekursive funksjoner.


Laste ned ppt "Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver."

Liknende presentasjoner


Annonser fra Google