n-queens Local Search met Conflict Minimalizatie

Vergelijkbare documenten
From Alife Agents to a Kingdom of Queens

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Derde college complexiteit. 7 februari Zoeken

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Vierde college complexiteit. 14 februari Beslissingsbomen

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Uitleg van de Hough transformatie

ALGORITMIEK: antwoorden werkcollege 5

Zevende college Algoritmiek. 6 april Verdeel en Heers

3. Structuren in de taal

Zevende college algoritmiek. 23/24 maart Verdeel en Heers

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5

Basiskennis lineaire algebra

II. ZELFGEDEFINIEERDE FUNCTIES

n-queens minimale dominantie verzamelingen Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: , Appendix A.

Algoritmiek. 2 februari Introductie

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Opgave Constraint Processing

WI1808TH1/CiTG - Lineaire algebra deel 1

Constraint satisfaction. Computationele Intelligentie. Voorbeelden. Een constraint satisfaction probleem. Constraint Satisfaction

Verslag Opdracht 4: Magische Vierkanten

Zevende college algoritmiek. 24 maart Verdeel en Heers

Magidoku s en verborgen symmetrieën

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Modelleren C Appels. Christian Vleugels Sander Verkerk Richard Both. 2 april Inleiding 2. 3 Data 3. 4 Aanpak 3

Hoofdstuk 16: Zoek- en verwijzingsfuncties

VBA voor doe het Zelvers deel 22. Handleiding van Helpmij.nl. Auteur: leofact

Matrixoperaties. Definitie. Voorbeelden. Een matrix is een rechthoekig array van getallen, die kentallen of elementen heten.

Local search. Han Hoogeveen CGN A februari, 2009

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Met de functies Verticaal zoeken of Horizontaal zoeken kun je gegevens in het rekenblad laten opzoeken en weergeven.

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Kennisrepresentatie & het IDP systeem

Local search. Han Hoogeveen. 21 november, 2011

Hoofdstuk 3. Matrices en stelsels. 3.1 Matrices. [[1,7]],[[12,8] ] of [ 1, 7; 12,8 ] bepaalt de matrix

Doorzoeken van grafen. Algoritmiek

Hopfield-Netwerken, Neurale Datastructuren en het Nine Flies Probleem

Programmeerstructuren met App Inventor

Datastructuren en algoritmen voor CKI

Het Queens n 2 graafkleuring probleem

IMO-selectietoets I donderdag 7 juni 2018

Negende college algoritmiek. 15 april Dynamisch Programmeren

vandaag is Annie twee jaar jonger dan Ben en Cees samen

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Computationele Intelligentie

Programmeren (1) Examen NAAM:

Afbeelding 12-1: Een voorbeeld van een schaakbord met een zwart paard op a4 en een wit paard op e6.

Examen Datastructuren en Algoritmen II

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort

Kunstmatige Intelligentie (AI) Hoofdstuk 6 van Russell/Norvig = [RN] Constrained Satisfaction Problemen (CSP s) voorjaar 2015 College 7, 31 maart 2015

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Genetische algoritmen in Java met JGAP

Wiskunnend Wiske. 5. Goochelende getallen. Wat ik ga studeren? Wiskunde natuurlijk!

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

Tiende college algoritmiek. 14 april Gretige algoritmen

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force

Informatica: C# WPO 13

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound

Benaderingsalgoritmen

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

Random-Getallen. Tristan Demont en Mark van der Boor en

1. Cellen en formules

De statespace van Small World Networks

Datastructuren college 10

Gaap, ja, nog een keer. In één variabele hebben we deze formule nu al een paar keer gezien:

Artificiële Intelligentie Project 2 - Constraint Processing

3.1 Negatieve getallen vermenigvuldigen [1]

(On)Doenlijke problemen

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 De website bij het boek 7 Introductie Visual Steps 8 Wat heeft u nodig? 8 Uw voorkennis 9 Bonushoofdstukken

{ specificatie (contract) en toelichting }

Gratis Sudoku Editie 00 PuDNL. Wat is een PuzzelDoku? 1 Uitdagende PuzzelDoku wacht om te worden opgelost

Take-home Tentamen Protocolvericatie. Universiteit van Amsterdam. 27 Maart 1994

1. Cellen en formules

Een Stelling over Priemgetallen Bewezen op een Schaakbord Seminar Combinatorial Algorithms (voorjaar 2010)

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

3.2 Vectoren and matrices

Achtste college complexiteit. 2 april Polynoomevaluatie Matrixvermenigvuldiging Euler- en Hamiltonkringen

16.3 Opgaven hoofdstuk 4: 2-d partities

1. Rekenen en formules

Vakgroep CW KAHO Sint-Lieven

Hoofdstuk 7: Werken met arrays

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Tiende college algoritmiek. 26 april Gretige algoritmen

Project Paper: Tiling problem

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Informatica: C# WPO 11

Informatica: C# WPO 10

Het oplossen van stelsels lineaire vergelijkingen Wiskunde 2, 2DM60 College 2b

Stelsels Vergelijkingen

Transcriptie:

n-queens Local Search met Conflict Minimalizatie Efficient Local Search with Conflict Minimalization: A Case Study of the n-queens Problem, door Rok Sosič en Jun Gu. Sjoerd van Egmond svegmond@liacs.nl LIACS, Universiteit Leiden 8 april 2010 Samenvatting Deze notitie is een nederlandse vrije vertolking van de artikelen Efficient Local Search with Conflict Minimalization [1] en 3,000,000 Queens in Less Than One Minute [2] van Rok Sosič en Jun Gu. Hierin wordt een algoritme voor het n-queens probleem beschreven dat in lineaire tijd een oplossing vindt voor heel grote n. 1 Introductie Er is al veel onderzoek gedaan naar het oplossen van het n-queens probleem, maar de auteurs van [1] hebben toch een nieuwe methode onderzocht om snel een oplossing te genereren. Waar het meeste onderzoek gedaan wordt naar het verbeteren van backtracking zijn Sosič en Gu meer richting een local search methode gegaan, om van daar uit een willekeurige oplossing te kunnen genereren in lineaire tijd. Backtracking is simpel te omschrijven en toch een erg sterk mechanisme. Het onthoudt welke stappen het gedaan heeft, probeert alles op volgorde en gaat terug als het vast loopt. In Figuur 1 is een voorbeeld te zien van een backtracking mechanisme voor het n-queens probleem met n = 4. Alle knopen met een kruis erin zijn knopen zonder oplossingen waaruit het backtrack 1

Figuur 1: Backtrack voorbeeld voor n=4 algoritme is teruggekomen. In deze figuur is het backtracking algoritme gestopt nadat het twee oplossingen had gevonden, daardoor zijn de knopen aan de rechterkant nog niet bezocht. De opbouw van deze notitie is als volgt. In Hoofdstuk 2 behandelen we het n-queens probleem en de bruikbaarheid van de oplossingen, in Hoofdstuk 3 komt het daadwerkelijke algoritme aan bod. We vervolgen met een verkorte analyse van het algoritme in Hoofdstuk 4 en besluiten met een korte conclusie in Hoofdstuk 5. 2 n-queens Het n-queens probleem wordt compact beschreven in Definitie 1. Definitie 1. Op een schaakbord van grootte n n willen we n queens plaatsen zodanig dat geen enkele queen een ander kan slaan. Een queen kan horizontaal, verticaal en diagonaal andere stukken op het schaakbord slaan, wat voor horizontaal en verticaal betekent dat er precies één queen op iedere rij en iedere kolom moet komen te staan. Ook op iedere diagonaal mag er dus maximaal één queen staan, anders slaan ze elkaar. Dit is een voorbeeld van een Constraint Satisfaction Probleem, waarbij een oplossing gevonden moet worden voor een probleem terwijl de beperkingen (constraints) in acht (satisfaction) genomen moeten worden. 2

2.1 Bruikbaarheid Figuur 2: Transmitter voorbeeld voor n=10 In [1] worden een aantal applicatie-domeinen aangehaald waarbinnen de oplossingen van het n-queens probleem gebruikt worden. Genoemde domeinen zijn onder andere very large scale integration (VLSI) testing, luchtverkeerscontrole, moderne communicatie-systemen, data/bericht-routering in een multiprocessor computer, load balancing in een multiprocessor computer, computer task scheduling, computer resource management, optische parallele processen en data-compressie. Naast eerdergenoemde domeinen is er nog een ander voorbeeld dat daadwerkelijk uitgewerkt is, namelijk het plaatsen van een array van smalband, directionele zers/ontvangers. Als we aannemen dat deze zers/ontvangers in 8 richtingen kunnen versturen of luisteren dan is dit te modelleren als een n-queens probleem. In Figuur 2 is een oplossing voor n = 10 te zien, waarbij elke zer/ontvanger in alle richtingen contact heeft met de wereld buiten het array, en er dus geen interferentie optreedt binnen het array. 3 Algoritme Het algoritme om een willekeurige n-queens oplossing te vinden bestaat uit twee onderdelen, een initiële plaatsing en een local search. In de eerste versie van het algoritme [2], genaamd QS1, werd alleen het local search gedeelte gebruikt. In de huidige versie zoals beschreven in [1], en QS4 genoemd in [2], is de initiële plaatsing toegevoegd om de complexiteit aanzienlijk te verminderen. In Algoritme 1 is de verdeling tussen de initiële plaatsing en de local search te zien, in Algoritme 2 wordt vervolgens de initiële plaatsing uitgewerkt, en in Algoritme 3 wordt de local search methode behandeld. Algoritme 1 is de omvatte functie die Algoritme 2 en Algoritme 3 bevat. Vanuit Algoritme 2 komt het aantal queens aan de rechterkant van 3

het bord dat mogelijk nog conflicten heeft, wat als parameter aan Algoritme 3 wordt meegegeven. Algoritme 1 n-queens algoritme proc Queens Oplossing(queen array[1..n] of integer) var k integer comment: k: aantal queens met conflicten. begin k Initieel(queen) Lokaal Zoeken(k, queen) Algoritme 2 is een stuk interessanter. Hierin wordt van links naar rechts in iedere kolom een queen op een locatie gezet zodanig dat die queen aan de linkerkant geen conflicten genereert. Dit gebeurt door middel van het swappen van kolommen. Omdat alle queens aan het begin geplaatst worden op de diagonaal wordt de oplossing direct aan twee van de drie beperkingen gehouden, namelijk dat er horizontaal en vertikaal maar één queen per rij en kolom mag staan. Door een swap te definiëren volgens Definitie 2 zal er altijd aan deze beperkingen voldaan worden. Omdat door een swap het aantal queens per kolom niet verandert blijft de oplossing geldig met betrekking tot de vertikale beperking. Omdat er ook per rij maar één queen staat en er twee rijen worden omgewisseld blijft de horizontale beperking ook geldig. Definitie 2. Een swap wordt uitgevoerd door de posities van twee queens uit verschille kolommen om te wisselen. Een eigenschap van de swap in Algoritme 2 is dat een kolom j alleen geswapt wordt met een kolom rechts ervan. Wat Links Conflicten doet is het controleren van de nieuwe situatie op conflicten aan de linkerkant van kolom j. Als de nieuwe positie van de queen in kolom j een conflict met een queen aan de linkerkant veroorzaakt wordt de swap teruggedraaid. In Hoofdstuk 4 wordt uitgelegd waarom er in totaal maar 3,08 n keer geswapt wordt en er dan doorgegaan wordt naar het volge deel. In Algoritme 3 wordt het laatste stuk stuk van het bord aan de rechterkant opgelost door middel van een local search met conflict-minimalizatie. Als invoer wordt het aantal queens met conflicten meegegeven, en zolang er nog conflicten bestaan in een kolom (en het aantal swaps niet over een bepaalde 4

Algoritme 2 Initieel proc Initieel(queen array[1..n] of integer) var i,j,m integer begin for i = 1 to n do queen[i] = i; od j = 1; for i = 1 to 3,08 n do m = Random(j,n) Swap(j, m) if Links Conflicten(j)=0 then j = j+ 1 else Swap(j,m) fi od for i = j to n do m = Random(i,n) Swap(i, m) od Returnn j+ 1 drempel komt) wordt er doorgezocht. In tegenstelling tot Algoritme 2 wordt er hier met alle kolommen geswapt, dus ook de eerste n k kolommen. Wat ook anders is is dat een swap alleen wordt toegestaan als beide kolommen na de swap geen enkel conflict hebben, en daar zorgt Totaal Conflicten voor. 3.1 Links- en Totaal-Conflicten Het gehele algoritme is lineair met betrekking tot de swap operaties en dit betekent echter ook dat de functies Links Conflicten en Totaal Conflicten niet te tijdrov mogen zijn. Dit wordt bereikt door voor de twee verschille diagonalen arrays van grootte 2n 1 bij te houden die bijhouden hoeveel queens er al op die diagonalen staan. Voor de diagonaal van linksonder naar rechtsboven hebben we de indices 2 tot n+n nodig, en voor de diagonaal van linksboven naar rechtsonder de indices n + 1 tot n 1. Voor iedere swap operatie, waarbij er dus twee queens verplaatst worden, hoeft er dus maar vier keer een diagonaal-telling te veranderen. Twee keer omdat er een queen weggaat, en twee keer omdat er een queen bijkomt. De reden waarom de indices zo gekozen zijn is omdat we dan met behulp van het kolomnummer en het rijnummer direct kunnen berekenen in welke diagonaal de queen zich bevindt. Voor de eerst beschreven indices is de optelling van het kolomnummer met het rijnummer de benodigde index. De 5

Algoritme 3 Lokaal Zoeken proc Lokaal Zoeken(k integer, queen array[1..n] of integer) var i,j integer b boolean swaps integer maxswaps integer begin swaps = 0 maxswaps = 7000 for i = n k+ 1 to n do if Totaal Conflicten(i)>0 swaps maxswaps then b = false while b swaps maxswaps do j = Random(1,n) Swap(i, j) b =(Totaal Conflicten(i) > 0) or(totaal Conflicten(j) > 0) if b then Swap(i, j) else swaps = swaps+ 1 fi od fi od index van de tweede diagonaal wordt verkregen door het rijnummer van het kolomnummer af te trekken. 4 Analyse In [1] wordt stap-voor-stap een formule opgebouwd om weer te geven hoeveel swaps er in Algoritme 2 nodig zijn om een oplossing te genereren. In Figuur 3 is deze formule geplot als een vloeie functie, waarbij de punten experimenteel geverifieerde aantallen zijn. Hieruit is het aantal swaps overgenomen dat nodig is om in de initiële fase een volledige oplossing te genereren als bovengrens van het aantal toegelaten swaps. Dit is de 3,08 uit de loop van Algoritme 2. Een belangrijk effect van het zetten van 3,08 is dat het aantal queens met conflicten niet lineair lijkt toe te nemen bij een vergroting van n. In Tabel 1 zijn de resultaten te zien van experimenten met n van 100 tot 1.000.000, waaruit aannemelijk wordt dat het aantal queens met conflicten niet erg groot zal zijn. Dit wordt gebruikt om een lineaire beperking te zetten op 6

Figuur 3: Stappen om x queens succesvol te plaatsen: benadere formule (curve) en experimenteel (punten). Aantal queens n 100 1000 10.000 100.000 1.000.000 Gemiddeld 91 979 9.969 99.977 999.975 Minimum 84 959 9.919 99.964 999.946 Maximum 97 990 9.990 99.988 999.987 Tabel 1: Aantal queens geplaatst in de initiële fase na 3,08 n stappen. Algoritme 3, zodat het totale algoritme lineair is. Een ander gegeven dat nodig is om te bepalen hoeveel berekeningen Algoritme 3 nodig heeft is het aantal swaps per queen om alle conflicten daarmee te verwijderen. In [1] is dit ook experimenteel bepaald, en in Figuur 4 zijn zowel de benadere formule (lijn) als de experimenten (punten) geplot. Ook hier is te zien dat de formule niet veel afwijkt van de werkelijkheid en er kan dus een redelijk maximum aan het aantal swaps bepaalt worden waarbinnen een oplossing gevonden zou moeten zijn, wat in [1] op 7000 gezet wordt. Een kleine notitie is echter nodig omdat er een kans bestaat dat Algoritme 2 een situatie heeft opgeleverd die te lastig is om binnen het gegeven maximum aantal swaps op te lossen. Als dit maximum bereikt wordt, wordt overnieuw begonnen met een nieuwe situatie. Maar ondanks het feit dat dit erg inefficiënt klinkt laat Tabel 2 zien dat dit erg mee valt voor grote n. Daarentegen is ook te zien dat voor n=200 dit getal erg omhoog springt en daarom is voor n<200 voor een andere methode gekozen, waarbij in Algo- 7

Figuur 4: Aantal queens met conflicten x, aantal swap pogingen om een queen succesvol te verwisselen. Aantal queens n 200 300 400 500 600 700 800 900 Aantal starts 168 127 106 105 101 100 102 101 Tabel 2: Totaal aantal starts om 100 oplossingen te vinden. ritme 3 in plaats van het random swappen van queens voor een volledige test met alle andere queens gekozen wordt. Dit levert voor n in de buurt van 200 doorgaans ongeveer drie herstarts op om een oplossing te vinden. 5 Conclusie Voor grote n hebben de auteurs van [1] en [2] een bijzonder efficiënt algoritme gevonden, dat in maximaal 3,08 n+7000 swap operaties met zeer grote kans een oplossing kan vinden. Voor n in de buurt van 200 en kleiner is deze methode echter minder effectief omdat er vaak niet binnen het gegeven aantal swaps een oplossing gevonden wordt. Bibliografie [1] Rok Sosič and Jun Gu. Efficient Local Search with Conflict Minimization: A Case Study of the n-queens Problem. IEEE Transactions on Knowledge and Data Engineering, 6(5):661 668, 1994. [2] Rok Sosič and Jun Gu. 3,000,000 Queens in Less Than One Minute. SIGART Bulletin, 2(2):22 24, 1991. 8