Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Hans Fr. Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "Hans Fr. Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 3 - Permutasjoner og permutasjonsgenerering Hans Fr. Nordhaug (Ola Bø)

2 Regler for rekursjonsalgoritmer
Basistilfelle som kan løses uten rekursjon må finnes Gjør framgang mot basistilfellet Anta at alle rekursive kall virker Rentesrente regelen - Dupliser aldri arbeid ved å gjenta samme løsning i separate rekursive kall. All rekursjon kan erstattes med iterasjon, men det er ikke nødvendigvis enkelt. Bruk heller iterasjon hvis det er enkelt

3 Tidtaking Bruk System.currentTimeMillis() og lagre starttiden i long t0 Finn på samme måte sluttiden t1 Anvendt tid = t1-t0

4 Permutasjoner Hvis vi har n elementer, så er en permutasjon en rekkefølge å stille opp elementene i. Å permutere betyr å bytte rekkefølge Antall permutasjoner er n! (n fakultet) 12!= 25!= Å prøver alle mulige kombinasjoner for å søke en løsning kalles kombinatorisk søking.

5 Eksempler på problemer som kan løses med kombinatorisk søking
Korteste rundtur mellom n byer Konfliktfri elevplassering Plassering av dronninger i sjakk Magiske firkanter

6 Permutasjonsgenerering prinsipp
Se på hvert element som et siffer To muligheter Enkel og brutal Lage alle tall av n sifre Fjerne alle tall der to sifre er like Færre operasjoner, men mer komplisert Gå ut fra et tall der alle sifre er ulike Lage nye rekkefølger av de sifrene vi har Raskere i praksis?

7 Permutasjonsgenerering i praksis

8 Permutasjonsgenerering i praksis

9 Enklere algoritme

10 Avskjæringer Kutte videre permutasjonsgenerering hvis eksisterende elementkombinasjon er ubrukelig Teste resultatet så langt Kalles også pruning Gode avskjæringer øker rekkevidden for problemløsning med permutasjoner.

11 Avskjæringer Dronningoppgaven Elevplassering
Plassere n dronninger på n x n sjakkbrett, slik at de ikke truer hverandre. Avbryte videre generering når to av de plasserte dronningene truer hverandre Elevplassering Avbryte videre generering når to uvenner kommer nær hverandre

12

13 Generalisering av permutasjonsgenerator
Kjedelig å skrive algoritmen på nytt for hvert problem - bedre å ha en permutasjonsgenerator som kan lage permutasjoner for enhver klient Krever at metoder for avskjæring og bruk av permutasjonene ligger i klient-klassen Permutasjonsgenereringsklassen må vite om klient-klassen og kunne kalle disse metodene Kallene må være klart definert Løsning: Definere et interface for Permutasjons- klient-klasser Gi permutasjonsgeneratoren kjennskap til klient-klassen.

14 Interface for klasser som bruker permutasjoner

15 Generell permutasjonsgenerator


Laste ned ppt "Hans Fr. Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google