- Leren
- Informatica & ICT
- Informatica
- Kunstmatige intelligentie
- Constraintvervullingsproblemen
Constraintvervullingsproblemen
GemiddeldLes 3 van 10 in Cursus Kunstmatige intelligentie
Wat je leert
- Beschrijf een probleem aan de hand van de variabelen, domeinen en constraints, herken de soorten constraints en zet plannings- en toewijzingstaken uit de praktijk om in correct geformuleerde constraintvervullingsproblemen.
- Beschrijf de onderdelen van een constraintvervullingsprobleemBenoem de variabelen, domeinen en constraints van een probleem, onderscheid gedeeltelijke, consistente en volledige waardetoekenningen en teken de constraintgraaf.
- Onderscheid de soorten constraintsDeel constraints in als unair, binair, van hogere orde of globaal, herschrijf constraints van hogere orde als binaire constraints en onderscheid harde constraints van voorkeuren.
- Modelleer planningsproblemen en toewijzingsproblemen als CSP'sZet roosterproblemen, werkplaatsplanning, toewijzingstaken en puzzels om in CSP's. Kies variabelen en domeinen zo dat de constraints eenvoudig blijven.
- Beschrijf de onderdelen van een constraintvervullingsprobleem
- Zoek naar een oplossing door steeds één variabele een waarde te geven, keer terug bij doodlopende zoekpaden en kies de volgorde van variabelen en waarden zo dat je met veel minder werk een oplossing vindt of bewijst dat er geen is.
- Voer zoeken met backtracking stap voor stap uitLeg uit waarom backtracking per niveau één variabele een waarde geeft, voer het algoritme met de hand uit en beschrijf de volledigheid en kosten ervan.
- Kies variabelen en waarden met ordeningsheuristiekenPas de heuristiek van de minste resterende waarden, de graadheuristiek en de minst beperkende waarde toe, leg uit waarom ze in tegengestelde richtingen wijzen en meet hun effect op een zoekproces.
- Keer na een doodlopend zoekpad gericht terug naar een eerdere keuzeGebruik conflictverzamelingen om terug te springen voorbij variabelen die een mislukking niet hebben veroorzaakt en leg verboden combinaties vast zodat dezelfde mislukking zich niet herhaalt.
- Voer zoeken met backtracking stap voor stap uit
- Gebruik inferentie om vóór en tijdens het zoeken waarden te verwijderen die geen deel van een oplossing kunnen zijn, en beoordeel wat voorwaartse controle, boogconsistentie en sterkere consistentie elk garanderen.
- Pas tijdens het zoeken voorwaartse controle toeVerklein de domeinen van variabelen die grenzen aan een variabele die net een waarde heeft gekregen, herken lege domeinen, herstel waarden bij het terugkeren en herken wat voorwaartse controle mist.
- Dwing boogconsistentie af met AC-3Pas knoop- en boogconsistentie toe, voer AC-3 met de hand uit, ken de kosten en beperkingen en handhaaf boogconsistentie tijdens het zoeken.
- Gebruik sterkere consistentie en globale constraintsLeg pad- en k-consistentie uit, pas propagatie toe op Alldiff- en grensconstraints en weeg het extra verwijderen van waarden af tegen de kosten.
- Pas tijdens het zoeken voorwaartse controle toe
- Begin met een volledige waardetoekenning en herstel die met de minimaleconflictenheuristiek, ontsnap aan plateaus en lokale minima en beoordeel wanneer lokaal zoeken of backtracking de betere methode is.
- Herstel waardetoekenningen met de minimaleconflictenheuristiekVoer de minimaleconflictenheuristiek met de hand uit op een formulering met volledige kandidaatoplossingen, leg uit waarom de methode goed werkt bij grote problemen en gebruik haar om een rooster na een wijziging te herstellen.
- Ontsnap aan plateaus en lokale minima en kies tussen lokaal zoeken en backtrackingGebruik zijwaartse stappen, taboezoeken, constraintweging en herstarts en bepaal welke methode bij een gegeven probleem past.
- Herstel waardetoekenningen met de minimaleconflictenheuristiek
- Lees de constraintgraaf om een probleem in onafhankelijke delen te splitsen, los problemen met een boomstructuur op in lineaire tijd en herleid problemen met een bijna-boomstructuur tot bomen.
- Splits onafhankelijke deelproblemen af en los CSP's met een boomstructuur opVind onafhankelijke deelproblemen in de constraintgraaf en los een CSP met een boomstructuur op met de achterwaartse en voorwaartse doorloop van het boomalgoritme.
- Herleid problemen met een bijna-boomstructuur tot bomenPas conditioneren op een cyclusdoorbrekende knopenverzameling en boomdecompositie toe, breng hun kosten in verband met de grootte van de knopenverzameling en de boombreedte en doorbreek waardesymmetrie.
- Splits onafhankelijke deelproblemen af en los CSP's met een boomstructuur op
Constraintvervullingsproblemen: uitleg
1Formuleer problemen als constraintvervullingsproblemen
Een rooster kiezen of beoordelaars toewijzen begint met een model: wat heeft een waarde nodig, welke waarden zijn mogelijk en welke combinaties zijn toegestaan? Met een helder model kunnen dezelfde oplossingsmethoden voor heel verschillende taken werken. Je bouwt dat model, onderscheidt eisen van voorkeuren en ziet hoe de keuze van variabelen het werk van een oplosser verandert. Kleine voorbeelden van planning en puzzels maken elk onderdeel concreet.
1.1 Beschrijf de onderdelen van een constraintvervullingsprobleem
Een constraintvervullingsprobleem, of CSP, beschrijft een verzameling keuzes en de regels die ze verbinden. De toestand heeft een gefactoriseerde representatie: je kunt afzonderlijke variabelen en hun waarden bekijken en vervolgens algemene methoden voor het verwijderen van waarden en het zoeken opnieuw gebruiken.
Variabelen, domeinen en constraints
Een variabele benoemt iets wat gekozen moet worden. Het domein bevat de toegestane waarden. Een constraint geeft aan welke combinaties samen mogen voorkomen. Laat voor workshops A en B elke waarde een tijdvak uit zijn. De regel “A komt vóór B” heeft variabelenbereik en constraintrelatie . De schrijfwijze drukt dezelfde relatie beknopt uit.
Het variabelenbereik noemt de betrokken variabelen; de constraintrelatie geeft de toegestane waardetupels. Als je die verwart, kan een model ontstaan waarin “rood” een variabele wordt. Bij het kleuren van een kaart zijn regio's variabelen en kleuren waarden.
Wat telt als oplossing?
Een waardetoekenning geeft waarden aan variabelen. Drie controles beschrijven de status ervan:
- De waardetoekenning is gedeeltelijk als sommige variabelen geen waarde hebben.
- De waardetoekenning is volledig als elke variabele een waarde heeft.
- De waardetoekenning is consistent als die geen constraint tussen de variabelen met een waarde schendt.
Een oplossing moet volledig en consistent zijn. Met alleen is de waardetoekenning consistent maar gedeeltelijk. Uitbreiding met maakt haar volledig en inconsistent. De keuze geeft een oplossing voor dit voorbeeld met twee variabelen. Een consistente gedeeltelijke waardetoekenning kan toch onmogelijk volledig worden gemaakt: bij variabelen zonder waarde kunnen de passende keuzes opraken.
Lees een constraintgraaf
Teken voor een binair CSP één knoop per variabele en één verbinding voor elk paar met een constraint. Op een vereenvoudigde kaart van Australië zijn de variabelen WA, NT, SA, Q, NSW, V en T, elk met domein {rood, groen, blauw}. De aangrenzende paren zijn WA–NT, WA–SA, NT–SA, NT–Q, SA–Q, SA–NSW, SA–V, Q–NSW en NSW–V. Elke verbinding vereist verschillende kleuren.
Een oplossing is WA rood, NT groen, SA blauw, Q rood, NSW groen, V rood en T rood. Controleer elke verbinding, ook SA–V. T heeft geen verbinding, dus is de kleur onafhankelijk van het vasteland. Er zijn 6 kleuringen van het vasteland en 3 keuzes voor T, samen 18 oplossingen. Een constraint met meerdere variabelen vereist een hypergraafrepresentatie; een extra constraintknoop kan worden verbonden met elke variabele in het variabelenbereik.
Domeinen en zoekruimte
Een eindig discreet domein is een vaste lijst, zoals drie kleuren. Een oneindig discreet domein kan elke niet-negatieve gehele begintijd bevatten. Een continu domein kan tijden met reële waarden bevatten. De laatste twee vereisen representaties en methoden die bij die domeinen passen; lineair programmeren behandelt continue lineaire constraints.
Voor variabelen met elk waarden zijn er volledige waardetoekenningen. De kaart heeft kandidaten voordat constraints er uitsluiten. Eindige CSP's omvatten NP-complete problemen, dus is er geen algemene oplossingsmethode in polynomiale tijd bekend. Hun interne structuur maakt het toch mogelijk waarden uit te sluiten: de oplosser kan een keuze uitsluiten zonder elke volledige waardetoekenning met die keuze op te sommen. Alleen de uiteindelijke waarden bepalen of het antwoord geldig is; het pad waarlangs ze zijn gevonden, is niet van belang.
Belangrijkste punten
- Een CSP specificeert variabelen, hun domeinen en constraints over combinaties van waarden.
- Een oplossing is zowel volledig als consistent.
- Een binaire constraintgraaf laat zien welke variabelen elkaar rechtstreeks beïnvloeden.
- Bij gelijke domeingrootte is het aantal volledige waardetoekenningen .
1.2 Onderscheid de soorten constraints
Constraints verschillen in het aantal variabelen dat ze verbinden en in de vraag of ze eisen of voorkeuren aangeven. Als je die structuur herkent, kun je een getrouw model schrijven en bruikbare propagatiemethoden kiezen.
Deel in naar variabelenbereik
Een unaire constraint beperkt één variabele. Als workshop E tijdvak 1 niet kan gebruiken, pas je toe door het domein vóór het zoeken te verkleinen van tot . Een binaire constraint legt een verband tussen twee variabelen, zoals of . Een binair CSP bevat alleen unaire en binaire constraints.
Een constraint van hogere orde heeft betrekking op minstens drie variabelen. Als de taakduren X, Y en Z samen 10 uur moeten vullen, schrijf je . Met elke duur in voldoet de tupel niet, terwijl wel voldoet. Bij de controle van een regel van hogere orde moeten de waarden samen voldoen.
Behoud nuttige globale constraints
Een globale constraint geeft een benoemde regel over een groep met een variabel aantal leden. vereist voor elk paar verschillende waarden. De oplossingsverzameling is gelijk aan die van de paarsgewijze ongelijkheden. Voor negen Sudokucellen zijn dat 36 binaire constraints.
De globale vorm laat een oplosser ook over de groep redeneren. Drie variabelen die beperkt zijn tot twee verschillende waarden kunnen niet allemaal verschillen, ook al heeft elk afzonderlijk paar een verenigbare waardetoekenning. Gelijke oplossingsverzamelingen garanderen niet dat evenveel waarden kunnen worden verwijderd.
Een capaciteitsregel kan ook globaal zijn. Hier betekent hetzelfde als : het totale aantal mensen dat aan de drie taken is toegewezen, mag niet groter zijn dan tien. De argumenten stellen aantallen voor die worden opgeteld, dus staat deze regel bijvoorbeeld toe.
Zet een eindige constraint om naar binaire vorm
Introduceer een hulpvariabele U waarvan de waarden de toegestane drietallen voor zijn. Eén mogelijke waarde is . Voeg drie binaire constraints toe: de eerste component van U is gelijk aan X, de tweede aan Y en de derde aan Z. Als je die waarde voor U kiest, vereist dat dus , en .
Elk oorspronkelijk geldig drietal komt overeen met een waarde van U en elke consistente waardetoekenning met U levert een geldig oorspronkelijk drietal op. Met deze constructie kunnen binaire methoden een eindige constraint van hogere orde behandelen. De prijs is het mogelijk grote tupeldomein; daarom behouden oplossers vaak de oorspronkelijke globale regel of regel van hogere orde.
Eisen en voorkeuren
| Soort | Betekenis | Planningsvoorbeeld |
|---|---|---|
| Harde constraint | Elke oplossing moet eraan voldoen. | Een trainer kan niet twee workshops tegelijk geven. |
| Zachte constraint | Een schending voegt kosten toe aan een verder haalbare keuze. | Een trainer heeft een voorkeur voor een sessie in de middag. |
Met zachte constraints wordt de taak een optimalisatieprobleem met constraints, of COP: voldoe aan alle harde regels en minimaliseer de totale kosten van voorkeuren. Voor optimalisatie kun je vertakken en begrenzen en lokaal zoeken gebruiken.
Test het model met een waardetoekenning waarvan je weet dat die geldig is en een waarvan je weet dat die ongeldig is. Een verzonnen ongelijkheid tussen workshops zonder onderling verband sluit geldige roosters uit; een ontbrekende constraint voor een gezamenlijke trainer laat onmogelijke roosters toe. Ook voorkeuren vereisen aandacht: als je “middag heeft de voorkeur” verandert in “middag is verplicht”, kan elk haalbaar rooster verdwijnen.
Belangrijkste punten
- Unaire constraints verkleinen één domein; binaire constraints verbinden twee variabelen.
- Alldiff vereist paarsgewijs verschillende waarden, maar kan meer waarden uitsluiten door over de groep te redeneren.
- Met hulptupelvariabelen kun je eindige constraints van hogere orde omzetten naar binaire vorm.
- Harde constraints bepalen de haalbaarheid; zachte constraints ordenen haalbare keuzes.
- Controleer bij het testen van een model zowel een geldig als een ongeldig geval.
1.3 Modelleer planningsproblemen en toewijzingsproblemen als CSP's
Een model moet de beslissingen zo rechtstreeks beschrijven dat de regels gemakkelijk zijn uit te drukken. Bepaal eerst wat gekozen moet worden, ken vervolgens domeinen toe en vertaal elke eis naar een constraint over de variabelen waarop die werkelijk betrekking heeft.
Maak een workshoprooster
Vijf workshops van elk één tijdvak delen drie tijdvakken: 1 ochtend, 2 middaguur en 3 middag. Laat A Python voor beginners zijn, B Python voor gevorderden, C Statistiek, D Databases en E Ethiek. Elke workshop is een variabele met begindomein .
Gezamenlijke deelnemers vereisen , , , , en . De beginnersworkshop moet voorafgaan aan de gevorderdenworkshop, dus . De trainer van Ethiek komt op het middaguur aan, dus . Dit geeft zeven binaire verbindingen en één unaire regel; C heeft vier aangrenzende variabelen.
De waardetoekenning voldoet aan elke regel: elk paar met gezamenlijke deelnemers verschilt, de beginnersworkshop gaat vooraf aan de gevorderdenworkshop en Ethiek staat niet in tijdvak 1. Het is de enige geldige waardetoekenning onder de kandidaten. Workshops B en D mogen allebei tijdvak 3 gebruiken omdat geen regel vereist dat ze verschillen.
Als je in plaats daarvan één variabele per tijdvak kiest, wordt elke waarde een deelverzameling van workshops, met maximaal mogelijke deelverzamelingen per tijdvak. Regels zouden dan die verzamelingen moeten bekijken en ervoor moeten zorgen dat elke workshop eenmaal voorkomt. Met workshops als variabelen blijven de constraints eenvoudiger.
Druk taakduur en gedeelde hulpbronnen uit
Gebruik bij werkplaatsplanning voor elke taak een variabele voor de begintijd. Voorbereiden duurt 20 minuten, Analyseren 40 en Rapporteren 30. Begintijden zijn niet-negatieve gehele aantallen minuten. De volgorde en de uiterste tijd van 120 minuten geven
De vroegste begintijden zijn 0, 20 en 60. Als je vanaf de uiterste tijd terugwerkt, krijg je de laatste begintijden 30, 50 en 90. De intervallen zijn dus , en .
Twee taken die een machine delen, hebben een disjunctieve constraint nodig: of . Beide taken kunnen als eerste komen, maar ze mogen niet overlappen. Een eenvoudige voorrangsconstraint zou één bepaalde volgorde afdwingen en de andere mogelijkheid uitsluiten.
Modelleer toewijzingen en puzzels
Maak voor drie rapporten die aan drie beoordelaars worden toegewezen elk rapport een variabele met beoordelaars als waarden. Gebruik Alldiff als elke beoordelaar één rapport behandelt. Een belangenconflict verwijdert een beoordelaar uit het domein van het betreffende rapport.
Laat voor het n-damesprobleem de rij zijn van de dame in kolom . Eén dame per kolom is in het model ingebouwd. Vereis voor elk paar en om aanvallen over rijen en diagonalen te voorkomen. Voor acht dames verkleint dit de ruimte van mogelijke oplossingen van de keuze van 8 velden uit 64, plaatsingen, tot waardetoekenningen. Er zijn 92 oplossingen.
Voor Sudoku hebben de 81 celvariabelen domein 1–9. Gegeven cijfers leggen unaire constraints op en de 9 rijen, 9 kolommen en 9 blokken leggen elk Alldiff op.
Kies de grofste tijdseenheden waarmee je nog elke toegestane begintijd kunt weergeven. Sessies die op het hele uur beginnen hebben keuzes per uur nodig; domeinen per minuut zouden het werk vergroten zonder een nuttig rooster toe te voegen. Sluit af door voorkeuren van harde regels te scheiden en een klein geval met een bekend antwoord te controleren.
Belangrijkste punten
- Kies variabelen die de constraints eenvoudig houden en domeinen die niet fijnmaziger zijn dan nodig.
- Voorrang gebruikt ongelijkheden die het einde vóór het begin plaatsen; gedeelde hulpbronnen vereisen dat taken niet overlappen.
- Eén dame per kolom kan in de keuze van variabelen worden ingebouwd.
- Een correct model bevat impliciete regels voor hulpbronnen en behoudt toegestane gezamenlijke tijdvakken.
2Los CSP's op door te zoeken met backtracking
Een zoekmethode kan het grootste deel van haar werk verspillen door dezelfde keuzes opnieuw te bekijken of conflicten te laat te ontdekken. Backtracking bouwt een waardetoekenning op, één variabele tegelijk, en keert terug naar eerdere keuzes als een tak mislukt. Ordening van variabelen en waarden helpt om eerder bruikbare takken te vinden, terwijl conflictanalyse vaststelt welke keuzes een doodlopend zoekpad veroorzaakten. Door de beslissingen stap voor stap te volgen, kun je zowel de basismethode als de verbeteringen gemakkelijker beoordelen.
2.1 Voer zoeken met backtracking stap voor stap uit
Backtracking bouwt een gedeeltelijke waardetoekenning op met diepte-eerst zoeken. De methode kiest één variabele, probeert een waarde en gaat door tot ze een oplossing vindt of een keuze ongedaan moet maken. Het zoeken behoudt de bruikbare eerdere keuzes als een latere keuze mislukt.
Vertak op waarden, één variabele tegelijk
Eerst A en dan B een waarde geven levert dezelfde uiteindelijke waardetoekenning op als eerst B en dan A. Door deze commutativiteit kan een CSP-oplosser op elk niveau één variabele kiezen en op haar waarden vertakken. Als je elke variabelevolgorde zou toestaan, zou je bladeren krijgen voor slechts verschillende volledige waardetoekenningen. Voor vijf variabelen met drie waarden zijn dat 29.160 bladeren in plaats van 243.
De volgende variabele kan afhangen van de huidige domeinen. Het gaat erom dat je in een knoop één volgende variabele kiest; het zoeken heeft geen afzonderlijke takken nodig voor alle mogelijke volgorden van waardetoekenning.
Volg de recursieve stappen
- Als de waardetoekenning volledig en consistent is, geef die dan terug.
- Kies een variabele zonder waarde.
- Probeer elke domeinwaarde die consistent is met de huidige waardetoekenning.
- Roep de methode recursief aan nadat je een waarde hebt toegevoegd. Als de recursieve aanroep mislukt, maak die waardetoekenning dan ongedaan en probeer de volgende waarde.
- Als geen waarde werkt, meld de mislukking dan aan de aanroeper.
Gewone backtracking test een constraint zodra alle variabelen in het variabelenbereik een waarde hebben. Bij en B zonder waarde heeft geen volledig paar om te verwerpen. Als je dan probeert, mislukt dat onmiddellijk. Wachten tot elke variabele een waarde heeft, zou deze eenvoudige afwijzing uitstellen.
Volg een doodlopend zoekpad
Gebruik de workshopregels: . Neem de variabelen in de volgorde A, B, C, D, E en probeer de waarden 1, 2, 3.
- Kies . Verwerp en kies .
- Verwerp vanwege A en vanwege B; kies .
- Verwerp vanwege A; kies .
- E heeft geen toegestane waarde: 1 is verboden, 2 botst met D en 3 botst met C.
De mislukking bij E brengt de zoekmethode terug naar D. De volgende waarde daarvan, 3, botst met C. C heeft geen latere waarde, dus keert de zoekmethode terug naar B. De poging levert uiteindelijk nog een doodlopend zoekpad op onder . Daarna probeert de zoekmethode en bereikt ze . In deze volgorde test gewone backtracking in totaal 32 mogelijke waarden, inclusief afgewezen waarden.
Wat de methode garandeert
| Eigenschap | Gewone backtracking op eindige domeinen |
|---|---|
| Volledigheid | Vindt een oplossing als die bestaat; als alle mogelijkheden zijn doorzocht, staat onoplosbaarheid vast. |
| Omvang van het zoeken in het slechtste geval | Exponentieel, waardetoekenningen volgens de gebruikelijke grens. |
| Geheugen voor het zoekpad | Lineair in ; één actief pad wordt opgeslagen. |
Constraints controleren en het model opslaan hebben ook kosten. De beschrijving van lineair geheugengebruik betreft het zoekpad, terwijl propagatie ook domeinen en gegevens voor het ongedaan maken kan opslaan.
Chronologische backtracking keert terug naar de meest recente keuze. Snellere varianten verbeteren vier afzonderlijke beslissingen: de volgende variabele, de volgorde van haar waarden, de gevolgen die na een keuze worden afgeleid en de eerdere keuze waarnaar na een mislukking wordt teruggekeerd. Deze verbeteringen verminderen het werk in de praktijk zonder te veranderen wat als oplossing telt.
Belangrijkste punten
- Door commutativiteit hoef je niet elke volgorde van waardetoekenning te doorzoeken.
- Backtracking geeft per niveau één variabele een waarde en verwerpt schendingen van constraints waarvan alle variabelen een waarde hebben.
- Een mislukte recursieve aanroep maakt zijn keuze ongedaan en probeert een andere waarde.
- Backtracking op eindige domeinen is volledig, maar het zoeken is in het slechtste geval exponentieel.
- Lineair geheugen voor het zoekpad omvat niet alle opslag voor het model en propagatie.
2.2 Kies variabelen en waarden met ordeningsheuristieken
Een goede ordening kan een mislukking dicht bij de top van een zoekboom zichtbaar maken of bruikbare keuzes bewaren voor later. Variabeleordening en waardeordening dienen verschillende doelen, dus verschilt de richting die het beste lijkt.
Kies de meest beperkte variabele
De heuristiek van de minste resterende waarden (MRV) kiest de variabele zonder waarde met de minste waarden die op dat moment zijn toegestaan. Ze heet ook de heuristiek van de meest beperkte variabele of de vroeg-falenheuristiek. Een bijna uitgeput domein zal waarschijnlijk snel een tegenspraak aan het licht brengen. Als een domein leeg is, mislukt de tak onmiddellijk.
Tel de huidige waarden nadat waarden zijn verwijderd, niet de oorspronkelijke domeingrootten. Zonder opgeslagen domeinen moet een oplosser bepalen welke oorspronkelijke waarden nog consistent zijn met de waardetoekenning voordat MRV wordt toegepast.
De graadheuristiek maakt bij MRV een keuze tussen gelijke kandidaten door de variabele te kiezen met de meeste constraints op andere variabelen zonder waarde. Zo'n keuze beïnvloedt meer resterende beslissingen. Aangrenzende variabelen die al een waarde hebben, tellen niet mee voor deze resterende graad. Aan het begin op de kaart van Australië staan de gelijke domeinen met drie kleuren op gelijke hoogte en geven de vijf aangrenzende regio's SA de hoogste graad.
Houd opties open bij de keuze van een waarde
De minst beperkende waarde (LCV) probeert de waarde die de minste waarden verwijdert uit de domeinen van aangrenzende variabelen zonder waarde. Het beoordelen van mogelijke waarden kost extra rekenwerk, maar kan een kostbare mislukte tak voorkomen.
Met WA rood en NT groen kan SA alleen blauw zijn, terwijl Q rood of blauw kan zijn. Als je Q blauw kiest, wordt het domein van SA leeg. Als je Q rood kiest, verdwijnt rood uit het domein van NSW en blijft blauw voor SA behouden. LCV probeert daarom Q rood.
| Ordeningsbeslissing | Voorkeurskeuze | Reden |
|---|---|---|
| Volgende variabele | Minste resterende waarden | Ontdek een waarschijnlijke mislukking vroeg. |
| Variabele bij gelijke stand | Meeste aangrenzende variabelen zonder waarde | Beïnvloed meer resterende beslissingen. |
| Volgende waarde | Minste verwijderde waarden bij aangrenzende variabelen | Behoud de kans om de waardetoekenning te voltooien. |
Elke variabele moet uiteindelijk een waarde krijgen, waardoor het nuttig is een kwetsbare variabele vroeg te testen. Voor een eerste oplossing is slechts één waarde nodig, wat pleit voor een waarde die ruimte laat voor andere beslissingen.
Combineer ordening met voorwaartse controle
Pas in het workshoprooster eerst toe. E heeft twee waarden; A, B, C en D hebben er elk drie. MRV kiest E. Probeer en voorwaartse controle verwijdert 2 uit de domeinen van C en D.
C en D staan nu gelijk met domeinen . C heeft drie aangrenzende variabelen zonder waarde, A, B en D; D heeft er twee, A en C. De graadheuristiek kiest C. Kies , waarna en overblijven. MRV kiest , wat afdwingt; de voorrangsregel geeft dan . Met vijf waardetoekenningen wordt de oplossing gevonden zonder terug te keren. Een vaste variabelevolgorde met voorwaartse controle heeft 12 waardetoekenningen nodig en bereikt twee doodlopende zoekpaden.
Ordening behoudt de volledigheid omdat ze de volgorde van keuzes verandert zonder toegestane takken uit te sluiten. Het zoeken blijft in het slechtste geval exponentieel. Als je elke oplossing opsomt of onoplosbaarheid bewijst, moeten uiteindelijk alle relevante waarden worden onderzocht, zodat het voordeel van LCV om vroeg succes te hebben afneemt. Het belangrijkste nut is om eerder een eerste oplossing te vinden.
Belangrijkste punten
- MRV gebruikt het huidige aantal toegestane waarden.
- De graadheuristiek kiest bij gelijke stand op basis van constraints met variabelen zonder waarde.
- LCV behoudt bij het proberen van een waarde de keuzes van aangrenzende variabelen.
- Ordening verandert de hoeveelheid zoekwerk en behoudt de volledigheid.
2.3 Keer na een doodlopend zoekpad gericht terug naar een eerdere keuze
Een doodlopend zoekpad heeft vaak een kleinere oorzaak dan de hele huidige waardetoekenning. Terugspringen gebruikt die oorzaak om te bepalen waarheen wordt teruggekeerd en constraints leren onthoudt een mislukking zodat die niet opnieuw hoeft te worden ontdekt.
Vind de keuzes die de mislukking veroorzaakten
Neem op de kaart van Australië de volgorde van waardetoekenning Q, NSW, V, T, SA. Laat Q rood zijn, NSW groen, V blauw en T rood. SA grenst aan Q, NSW en V, dus zijn alle drie de kleuren verboden. De conflictverzameling van SA is : eerdere variabelen waarvan de keuzes de waarden van SA uitsluiten.
Chronologische backtracking zou proberen T te veranderen. Tasmanië heeft geen verbinding met SA, dus kan het veranderen van de kleur geen optie voor SA herstellen. Terugspringen keert terug naar V, het lid van de conflictverzameling dat het laatst een waarde kreeg, en slaat T over.
Een conflictverzameling bevat variabelen; een verboden combinatie legt specifieke waardetoekenningen vast. Dat onderscheid is belangrijk: een andere kleur voor V kan de mislukking verhelpen, ook al blijft V een buur van SA.
Voer een conflict mee door eerdere mislukkingen
Eenvoudig terugspringen gebruikt de directe conflictverzameling van de huidige mislukking. Conflictgestuurd terugspringen voert informatie mee door meerdere mislukte niveaus. Als een mislukte variabele X terugspringt naar Y, neemt Y de conflictverzameling van X over zonder Y. Als Y later alle waarden heeft uitgeput, wijst de gecombineerde verzameling een oorzaak verder terug in de waardetoekenning aan.
Gebruik bijvoorbeeld de volgorde WA, NSW, T, NT, Q, V, SA en begin met WA rood, NSW rood, T rood. WA en NSW grenzen niet aan elkaar, dus is deze gedeeltelijke waardetoekenning consistent. Hun keuzes verwijderen rood uit de domeinen van NT, Q en SA. Die drie regio's vormen een driehoek, die niet met alleen groen en blauw kan worden gekleurd.
Geen enkele keuze voor T verandert die driehoek. Conflictinformatie kan via de mislukte pogingen teruggaan en WA en NSW aanwijzen als de onderliggende oorzaak. De zoekmethode keert terug naar NSW, de latere van die twee beslissingen, in plaats van tijd te besteden aan het opnieuw kleuren van T.
Leer de mislukte combinatie
Een oplosser kan vastleggen als verboden combinatie. Telkens als beide keuzes opnieuw voorkomen, volgt dezelfde tegenspraak in de driehoek, zodat de tak onmiddellijk kan worden afgewezen. Het zou onjuist zijn om WA rood op zichzelf te verbieden: WA kan rood zijn in geldige oplossingen met een andere kleur voor NSW.
Leren voegt een constraint of een opgeslagen verboden combinatie toe. De geleerde voorwaarde moet volgen uit de oorspronkelijke constraints; een mislukking die alleen wordt veroorzaakt doordat een tijdslimiet is bereikt, biedt geen dergelijke logische rechtvaardiging. Een bruikbare verboden combinatie bevat genoeg waardetoekenningen om de onmogelijkheid te verklaren, zonder keuzes op te nemen die er niets mee te maken hebben.
Combineer vooruitkijken en terugkijken
Voorwaartse controle en boogconsistentie verwijderen waarden zonder ondersteuning voordat een mislukking diep in de boom optreedt. Terugspringen onderzoekt een mislukking nadat die is opgetreden. Eenvoudig direct terugspringen sluit geen mogelijkheden uit boven op wat voorwaartse controle al ontdekt, maar conflictgestuurde methoden kunnen verklaringen van diepere mislukkingen combineren. Leren bewaart die verklaringen voor latere takken.
Belangrijkste punten
- Een conflictverzameling wijst eerdere variabelen aan die verantwoordelijk zijn voor een mislukking.
- Terugspringen slaat keuzes over die niets met die mislukking te maken hebben.
- Conflictgestuurd terugspringen combineert conflictinformatie over mislukte niveaus heen.
- Een verboden combinatie verbiedt een onmogelijke combinatie van waardetoekenningen, niet elke waardetoekenning afzonderlijk.
- Vooruitkijkend waarden verwijderen en geleerde verklaringen kunnen samenwerken.
3Verklein domeinen met constraintpropagatie
Een waarde kan al onmogelijk zijn voordat haar variabele wordt gekozen. Constraintpropagatie volgt de gevolgen van huidige domeinen en waardetoekenningen en verwijdert waarden die de benodigde ondersteuning missen. De methoden verschillen in hoe ver ze vooruitkijken: van de directe buren van een beslissing tot paren, drietallen en hele groepen variabelen. Uitgewerkte domeinwijzigingen laten zien wat elke methode ontdekt, wat ze mist en wanneer het extra werk loont.
3.1 Pas tijdens het zoeken voorwaartse controle toe
Voorwaartse controle onderzoekt wat een nieuwe waardetoekenning direct uitsluit voor aangrenzende variabelen zonder waarde. Ze verwijdert onverenigbare waarden voordat de zoekmethode die variabelen bereikt, waardoor sommige doodlopende zoekpaden enkele niveaus eerder zichtbaar worden.
Verwijder waarden na een waardetoekenning
Bekijk na de keuze elke variabele Y zonder waarde die een constraint met X deelt. Verwijder elke waarde in die met de keuze conflicteert. Een leeg domein betekent dat de huidige tak niet tot een volledige waardetoekenning kan leiden, dus keer je direct terug.
Bij verwijdert de waardetoekenning de waarde 2 uit het domein van Y. Bij verwijdert elke waarde van Y die hoogstens 2 is. De relatie zelf bepaalt wat wordt verwijderd; voorwaartse controle beperkt zich niet tot het verwijderen van gelijke waarden.
Het verwijderen van waarden verandert de domeinen van de huidige tak. Houd in een herstellogboek elke verwijdering bij die door de keuze is veroorzaakt. Als die keuze ongedaan wordt gemaakt, herstel je de daardoor verwijderde waarden en behoud je de beperkingen die bij eerdere keuzes horen. Kopieën van domeinen op elk niveau bieden een andere implementatie.
Volg de workshopdomeinen
Gebruik tijdvakken 1–3 en de regels . Pas de unaire regel toe om te krijgen en gebruik daarna de vaste volgorde A, B, C, D, E.
- Na blijft voor B, C en D telkens over.
- Na blijft voor C alleen over.
- Na blijft voor D en E elk alleen over.
- verwijdert 2 uit het domein van E, waardoor dat leeg raakt. Keer terug.
Als de domeinen zijn hersteld en wordt geprobeerd, moet C gelijk zijn aan 2. Voor zowel D als E blijft dan alleen 3 over, dus maakt de waardetoekenning aan D het domein van E opnieuw leeg. De zoekmethode moet A veranderen. Met kan ze bereiken. In dit verloop worden 12 waarden geprobeerd, tegenover 32 mogelijke waarden bij gewone backtracking in dezelfde volgorde.
Herken de grens van controle in één stap
Na stap 3 hebben D en E allebei alleen de waarde 2 en moeten ze verschillen. Voorwaartse controle heeft die constraint nog steeds niet gecontroleerd: noch D noch E heeft net een waarde gekregen. Ze ontdekt de mislukking pas als D een waarde krijgt.
Dit is de belangrijkste beperking van voorwaartse controle. Ze toetst de variabele met een waarde aan de aangrenzende variabelen zonder waarde, zonder de gevolgen van een kleiner domein van een aangrenzende variabele verder te verspreiden. Boogconsistentie kan die gevolgen tussen variabelen zonder waarde wel volgen.
Gebruik de bijgehouden domeinen
MRV kan nu direct het kleinste resterende domein kiezen. Een domein met één waarde wordt vaak als volgende gekozen; een leeg domein wijst op een mislukking zonder dat nog een waardetoekenning nodig is. Domeinen actueel houden helpt zowel bij inferentie als bij ordening.
Voor maximaal aangrenzende variabelen en maximaal waarden per aangrenzende variabele gebruikt een ronde voorwaartse controle ongeveer binaire controles, aangenomen dat een relatietest constante tijd kost. Ze verwijdert alleen waarden die onverenigbaar zijn met de huidige waardetoekenning, dus blijft backtracking volledig. Als je vergeet een verwijderde waarde te herstellen, kan een latere tak een geldige oplossing verliezen; waarden verwijderen uit het domein van een niet-betrokken variabele kan hetzelfde gevolg hebben.
Belangrijkste punten
- Voorwaartse controle verwijdert waarden uit de domeinen van aangrenzende variabelen zonder waarde na een nieuwe waardetoekenning.
- Een leeg domein wijst de huidige tak onmiddellijk af.
- Herstel bij het ongedaan maken van een keuze de waarden die voor die tak zijn verwijderd.
- Voorwaartse controle propageert niet tussen twee variabelen zonder waarde.
3.2 Dwing boogconsistentie af met AC-3
Een waarde heeft in elk aangrenzend domein een verenigbare partner nodig. Boogconsistentie maakt die ondersteuningseis expliciet en volgt de gevolgen van domeinwijzigingen door een binair CSP.
Ondersteuning heeft een richting
Knoopconsistentie verwijdert eerst waarden die door unaire regels zijn verboden. Voor een binaire constraint is de gerichte boog consistent als elke waarde in X minstens één verenigbare waarde in Y heeft. Die waarde in Y is een ondersteunende waarde. Bij het herzien van de boog worden waarden zonder ondersteuning uit de beginknoop X verwijderd.
Bij met voor beide domeinen verwijdert het herzien van de waarde 3 uit A. Het herzien van verwijdert 1 uit B. De resulterende domeinen zijn en . Een overgebleven waarde kan voor elke aangrenzende variabele een andere ondersteunende waarde gebruiken; die ondersteunende waarden hoeven samen geen oplossing te vormen.
Voer AC-3 uit
AC-3 gebruikt een wachtrij van gerichte bogen:
- Zet aanvankelijk elke boog in de wachtrij.
- Neem uit de wachtrij en herzie X met behulp van het domein van Y.
- Als het domein van X leeg wordt, stop dan en meld dat de methode is mislukt.
- Als het domein van X krimpt, voeg dan toe voor elke andere aangrenzende variabele Z van X, met uitzondering van Y.
- Ga door tot de wachtrij leeg is.
Een verwijdering uit X kan een ondersteunende waarde voor Z wegnemen, dus moet de wachtrij bogen bevatten die terugwijzen naar het gewijzigde domein. De boog vanuit Y hoeft niet direct opnieuw te worden gecontroleerd: de verwijderde waarden van X ondersteunden geen enkele waarde in Y, omdat ze om te beginnen met geen daarvan verenigbaar waren. Als alle einddomeinen niet leeg zijn, zijn ze onafhankelijk van de verwerkingsvolgorde; verschillende volgorden kunnen bij een mislukking tot verschillende lege domeinen leiden.
Propageer een workshopbeslissing
Voor de workshopregels verwijdert de eerste uitvoering van AC-3 de waarde 3 uit A en 1 uit B. Voor C en D blijft over en voor E blijft over.
Kies nu . De boog verwijdert 1 uit A, zodat overblijft. Als je B ten opzichte van A herziet, wordt afgedwongen. D verschilt van C en A, dus . E verschilt van D en kan geen 1 zijn, dus . De domeinverkleiningen hebben zich verder verspreid dan de directe buren van de oorspronkelijke beslissing.
Boogconsistentie handhaven (MAC) past deze inferentie na elke zoekbeslissing toe. Als je uitgaat van boogconsistente domeinen en vastlegt, is een wachtrij nodig met inkomende bogen vanuit de aangrenzende variabelen zonder waarde. Verwijderde domeinwaarden moeten worden hersteld als de zoekmethode de tak ongedaan maakt.
Interpreteer het resultaat en de kosten
| Resultaat na knoop- en boogconsistentie | Betekenis |
|---|---|
| Een leeg domein | Geen oplossing vormt een uitbreiding van de huidige beperkingen. |
| Elk domein bevat één waarde | De enige resterende waardetoekenning voldoet aan het binaire CSP. |
| Sommige domeinen bevatten meerdere waarden | Verdere inferentie of verder zoeken kan nodig zijn. |
Een driehoek met domeinen {rood, blauw} en ongelijkheden op alle drie de verbindingen blijft boogconsistent, maar heeft geen oplossing. Elke verbinding heeft afzonderlijk ondersteunende waarden, maar de drie keuzes kunnen niet samengaan.
Met binaire constraints en maximale domeingrootte kost AC-3 tijd: een boogherziening controleert maximaal paren en elke boog kan maximaal ronden nodig hebben als de eindknoop waarden verliest. MAC kost meer per zoekknoop dan voorwaartse controle, vaak in ruil voor een veel kleinere zoekboom.
Belangrijkste punten
- Het herzien van verwijdert waarden zonder ondersteuning uit X.
- Nadat het domein van X krimpt, controleert AC-3 de bogen die naar X wijzen opnieuw.
- Niet-lege boogconsistente domeinen kunnen nog steeds een onvervulbaar CSP beschrijven.
- MAC handhaaft boogconsistentie na zoekbeslissingen.
- AC-3 heeft in het slechtste geval de gebruikelijke grens .
- Conclusies op basis van domeinen met één waarde vereisen dat de unaire en binaire constraints zijn afgedwongen.
3.3 Gebruik sterkere consistentie en globale constraints
Afzonderlijke paarsgewijze ondersteunende waarden kunnen een tegenspraak binnen een groep verhullen. Sterkere consistentie en gespecialiseerde globale propagatie onderzoeken combinaties die boogconsistentie mist, terwijl numerieke grenzen grote domeinen kunnen samenvatten in bruikbare intervallen.
Breid waardetoekenningen uit naar een andere variabele
Padconsistentie onderzoekt drietallen. Elke consistente waardetoekenning aan twee variabelen moet kunnen worden uitgebreid naar een derde met een waarde die met beide overeenkomt. In een driehoek die rood of blauw wordt gekleurd, laten X rood en Y blauw geen waarde over voor Z. Padconsistentie verwijdert dat toegestane paar en brengt uiteindelijk de onoplosbaarheid aan het licht. Ze kan tupels uit relaties verwijderen en doet dus meer dan afzonderlijke domeinwaarden verwijderen.
k-consistentie vereist dat elke consistente waardetoekenning aan willekeurige variabelen kan worden uitgebreid naar een willekeurige extra variabele. Voor binaire CSP's komt 1-consistentie overeen met knoopconsistentie, 2-consistentie met boogconsistentie en 3-consistentie met padconsistentie. Sterke k-consistentie omvat elk niveau van 1 tot en met k. Bij sterke n-consistentie voor n variabelen en niet-lege domeinen kan elke consistente gedeeltelijke waardetoekenning zonder terugkeren worden uitgebreid tot een oplossing. Het vaststellen van deze eigenschap heeft in het slechtste geval exponentiële tijd- en geheugenkosten.
Tel waarden in Alldiff
Alldiff vereist verschillende waarden voor alle variabelen in het variabelenbereik. Als een groep van m variabelen slechts n verschillende mogelijke waarden heeft en , kan geen waardetoekenning eraan voldoen.
Voor drie cellen met domein zijn paarsgewijze ongelijkheden boogconsistent: elke 4 heeft ondersteuning van 7 in elke aangrenzende cel en elke 7 heeft ondersteuning van 4. Toch voldoet de groep niet aan de telregel, omdat drie verschillende waarden nodig zijn en er maar twee bestaan.
Als twee cellen allebei domein hebben, moeten ze samen 4 en 7 gebruiken. Die waarden kunnen uit elke andere cel in dezelfde rij worden verwijderd. Dit redeneren met een naakt paar gebruikt een deelverzameling van het volledige variabelenbereik van Alldiff. Een eenvoudige globale propagatiemethode kan ook herhaaldelijk variabelen met één waarde verwerken, hun waarden elders verwijderen en controleren of er te weinig verschillende waarden overblijven. Sterkere propagatiemethoden herkennen ook beperkte deelverzamelingen.
Scherp numerieke grenzen aan
Grenspropagatie slaat een domein op via het minimum en maximum. Grensconsistentie vereist dat elk eindpunt voor elke relevante constraint een uitbreiding heeft die eraan voldoet; ze controleert niet elke tussenliggende waarde.
Laat voor twee bussen die 100 mensen vervoeren en gelden, met . De tweede bus vervoert hoogstens 70 mensen, wat afdwingt. De eerste vervoert hoogstens 50 mensen, wat afdwingt. De aangescherpte intervallen zijn en .
Voor Voorbereiden, Analyseren en Rapporteren, die in die volgorde 20, 40 en 30 minuten duren, geeft een uiterste tijd van 120 minuten de laatste begintijden 30, 50 en 90. Niet-negatieve begintijden geven de vroegste begintijden 0, 20 en 60. Door voorwaarts en achterwaarts te propageren krijg je deze intervallen voordat een begintijd wordt gekozen.
Kies een bruikbare sterkte
Elke Sudokucel heeft 20 verschillende aangrenzende cellen: 8 in de rij, 8 in de kolom en 4 extra cellen in het blok. Over 81 cellen geeft dat verschillende ongelijke paren. Globale constraints behouden dezelfde oplossingen als die paren, maar kunnen naakte paren en een tekort aan waarden eerder zichtbaar maken. Sterkere inferentie kost meer per ronde; praktische oplossers wegen die kosten af tegen het zoekwerk dat ze besparen en combineren vaak boogconsistentie met gespecialiseerde globale propagatie en grenspropagatie.
Belangrijkste punten
- Padconsistentie controleert of een consistent paar kan worden uitgebreid naar een derde variabele.
- Sterke k-consistentie omvat elk lager consistentieniveau.
- Alldiff ontdekt groepen met te weinig verschillende waarden.
- Een naakt paar reserveert zijn twee waarden voor die twee variabelen.
- Grenspropagatie scherpt eindpunten aan zonder een groot numeriek domein op te sommen.
- Sterkere inferentie kost extra werk per ronde, maar vermindert het zoekwerk.
4Los CSP's op met lokaal zoeken
Een rooster dat enkele regels schendt, kan toch een bruikbaar uitgangspunt zijn. Lokaal zoeken houdt voor elke variabele een waarde bij en herstelt conflicten stap voor stap. De uitdaging is productieve stappen te kiezen en gebieden te verlaten waar de voortgang stopt. Je volgt de minimaleconflictenheuristiek op een klein bord, onderzoekt manieren om het herstel gaande te houden en kiest een oplossingsmethode die past bij het bewijs dat een plannings- of toewijzingstaak vereist.
4.1 Herstel waardetoekenningen met de minimaleconflictenheuristiek
Lokaal zoeken begint met een waarde voor elke variabele, ook als sommige constraints worden geschonden. De minimaleconflictenheuristiek herstelt deze volledige waardetoekenning door één variabele in een geschonden constraint een waarde met zo weinig mogelijk conflicten te geven.
Kies een herstelstap
- Maak een volledige waardetoekenning, willekeurig of gulzig.
- Als geen constraint wordt geschonden, geef de oplossing dan terug.
- Kies willekeurig een variabele die bij een geschonden constraint betrokken is.
- Beoordeel elke domeinwaarde van die variabele ten opzichte van de andere variabelen, die vast blijven.
- Kies een waarde met de minste conflicten, kies willekeurig bij gelijke stand en herhaal tot een oplossing is gevonden of een staplimiet is bereikt.
Een variabele in een geschonden constraint is betrokken bij minstens één geschonden constraint. Het is niet noodzakelijk de variabele met het grootste aantal schendingen. Willekeurig kiezen tussen zulke variabelen en tussen gelijke waarden helpt een vaste herhaalde reeks te voorkomen.
Herstel een bord met 4 dames
Gebruik één dame per kolom, met rijvariabelen . Een paar conflicteert als de rijen gelijk zijn of als het verschil tussen de rijen gelijk is aan het verschil tussen de kolommen. Begin met . Kolommen 1 en 3 delen rij 2; de dames in kolommen 3 en 4 vallen elkaar diagonaal aan. De variabelen in geschonden constraints zijn Q1, Q3 en Q4.
Kies Q3 en beoordeel de rijen terwijl Q1, Q2 en Q4 vast blijven:
| Mogelijke rij voor Q3 | Conflicten waarbij Q3 betrokken is |
|---|---|
| 1 | 0 |
| 2 | 2 |
| 3 | 2 |
| 4 | 3 |
Rij 1 levert op, een oplossing. Als in plaats daarvan Q1 was gekozen, waren de aantallen voor rijen 1–4 gelijk aan 0, 1, 2 en 2. Verplaatsing naar rij 1 geeft , waarbij het diagonale conflict Q3–Q4 overblijft. Een lokaal beste herstelstap kan dus leiden tot een herstelproces dat nog niet klaar is.
Tel de constraints waarbij de gekozen variabele betrokken is. Alle schendingen op elk resulterend bord tellen geeft dezelfde ordening, omdat niet-betrokken constraints bij elke mogelijke waarde een constante bijdrage leveren. Het kost alleen meer werk. Gebruik één consistente definitie van een conflict wanneer je mogelijkheden vergelijkt.
Herstel een bestaand rooster
Als een trainer niet meer beschikbaar is, vormt het huidige rooster al een volledige waardetoekenning. De minimaleconflictenheuristiek kan daar beginnen en sessies verplaatsen tot aan de nieuwe en bestaande constraints wordt voldaan. Een kleine wijziging vereist vaak weinig herstelstappen, hoewel één stap elders nieuwe conflicten kan veroorzaken. Als behoud van het oude plan belangrijk is, koppel dan expliciete kosten aan het veranderen van een waardetoekenning; alleen het aantal schendingen minimaliseren beperkt de verstoring niet tot een minimum.
Bij experimenten met een goede beginwaardetoekenning waren zelfs voor een miljoen dames relatief weinig herstelstappen nodig. Op grotere borden kost elke stap nog steeds meer. De minimaleconflictenheuristiek is ook gebruikt voor de planning van Hubble-waarnemingen. Naar verluidt daalde de tijd om een week waarnemingen te plannen van ongeveer drie weken tot ongeveer 10 minuten.
Interpreteer het zoekgedrag
Veel families van willekeurige CSP's veranderen van overwegend oplosbaar naar overwegend onoplosbaar naarmate de verhouding tussen constraints en variabelen stijgt. Dicht bij die overgang is bepalen hoe keuzes elkaar beïnvloeden vaak het moeilijkst. Problemen met weinig beperkende constraints kunnen veel gemakkelijk bereikbare oplossingen hebben. Sterk beperkte onvervulbare problemen kunnen door volledige oplossers die propagatie gebruiken snel worden afgewezen.
Het bereiken van een staplimiet voor de minimaleconflictenheuristiek betekent dat in die uitvoering geen oplossing is gevonden. Het probleem kan nog steeds oplosbaar zijn. De praktische kracht van de methode komt voort uit efficiënte herstelstappen, waaronder stappen met een gelijke score, ook al vormen oplossingen een heel klein deel van alle mogelijke waardetoekenningen.
Belangrijkste punten
- De minimaleconflictenheuristiek begint met een volledige waardetoekenning en herstelt geschonden constraints.
- Kies een variabele in een geschonden constraint en daarna een waarde met zo weinig mogelijk conflicten; kies willekeurig bij gelijke stand.
- Bij de beoordeling van mogelijke waarden kun je constraints negeren die geen betrekking hebben op de gekozen variabele.
- De haalbaarheid herstellen en het aantal wijzigingen minimaliseren zijn verschillende doelen.
- Als de staplimiet wordt bereikt zonder oplossing, blijft de haalbaarheid onbeslist.
4.2 Ontsnap aan plateaus en lokale minima en kies tussen lokaal zoeken en backtracking
Een zoekmethode die oplossingen herstelt kan stoppen met verbeteren terwijl er nog conflicten zijn. Om verder te gaan heeft de oplosser een manier nodig om door toestanden met gelijke scores te bewegen of te veranderen welke stappen de moeite waard lijken. Ook het vereiste resultaat telt: een snelle haalbare aanpassing en een bewijs van onoplosbaarheid vereisen verschillende methoden.
Beweeg over een plateau
Een lokaal minimum heeft schendingen, maar geen stap die één variabele verandert en het aantal schendingen verlaagt. Een plateau is een samenhangend gebied van waardetoekenningen met dezelfde score. Stappen die alleen omlaag gaan kunnen vastlopen; een zijwaartse stap verandert de toestand zonder de score te verlagen.
Bij 4 dames heeft één conflict tussen Q3 en Q4. Als de andere dames vast blijven, zijn de aantallen van Q3 voor rijen 1–4 gelijk aan 1, 1, 3 en 2; die van Q4 zijn 2, 2, 1 en 2. Geen van beide variabelen heeft een verbeterende stap.
Q3 naar rij 1 verplaatsen geeft , nog steeds met één conflict: nu delen Q1 en Q3 een rij. In deze nieuwe toestand zijn de aantallen van Q1 gelijk aan 1, 0, 3 en 1. Q1 naar rij 2 verplaatsen levert op en neemt het conflict weg. De zijwaartse stap veranderde welke verbeterende stappen beschikbaar waren.
Houd het zoeken gaande
| Methode | Hoe de methode het zoeken verandert |
|---|---|
| Taboezoeken | Verbiedt recente toestanden of stappen tijdelijk om cycli te verminderen. |
| Constraintweging | Verhoogt het belang van constraints die geschonden blijven. |
| Willekeurige herstarts | Begint na vruchteloze stappen opnieuw met een andere volledige waardetoekenning. |
| Gesimuleerd afkoelen | Accepteert soms slechtere stappen, met een afnemende acceptatiekans als de temperatuur daalt. |
Een taboelijst is een kortetermijngeheugen. Ze ontmoedigt onmiddellijke terugkeer naar een toestand die net is verlaten. Een herstart onderzoekt een ander gebied, terwijl gesimuleerd afkoelen binnen de huidige uitvoering een gebied met meer conflicten kan doorkruisen.
Geef bij constraintweging elk gewicht aanvankelijk de waarde 1 en beoordeel een toestand met de som van de gewichten van de geschonden constraints. Kies een wijziging die deze gewogen score verlaagt en verhoog daarna de gewichten van constraints die geschonden blijven. Herhaalde mislukkingen worden duurder, waardoor het zoeklandschap van vorm verandert. Een gewogen score van nul betekent nog steeds dat aan elke harde constraint met een positief gewicht is voldaan.
Kies het bewijs dat je nodig hebt
Lokaal zoeken is onvolledig: het kan een bestaande oplossing missen en een eindige mislukte uitvoering laat onbeslist of het probleem onoplosbaar is. Backtracking met propagatie op eindige domeinen is volledig: uiteindelijk vindt de methode een oplossing of onderzoekt ze alle mogelijke uitbreidingen.
Gebruik lokaal zoeken als een groot probleem met weinig beperkende constraints één haalbare waardetoekenning of een snelle aanpassing nodig heeft. Backtracking met MRV en MAC is een sterke keuze voor sterk beperkte puzzels en wanneer de taak een uitspraak over onoplosbaarheid vereist. De looptijd hangt nog steeds af van het concrete probleem; deze methodekeuzes zijn gebaseerd op hun garanties.
Het workshoprooster heeft de unieke oplossing . Toevoeging van sluit die uit. De minimaleconflictenheuristiek kan aanpassingen blijven proberen tot de limiet, maar alleen een volledige zoekmethode die de resterende gevallen uitput, stelt vast dat de organisator een eis moet veranderen, bijvoorbeeld door een extra tijdvak toe te voegen.
Belangrijkste punten
- Een zijwaartse stap kan voorbij een plateau een verbeterende stap zichtbaar maken.
- Taboegeheugen, gewichten, herstarts en gesimuleerd afkoelen pakken verschillende hindernissen voor voortgang aan.
- Lokaal zoeken is onvolledig; uitputtende backtracking op eindige domeinen is volledig.
- Kies een volledige methode wanneer onoplosbaarheid moet worden vastgesteld.
5Benut de structuur van een probleem
De vorm van een constraintgraaf kan even belangrijk zijn als de grootte van de domeinen. Afzonderlijke componenten kunnen onafhankelijk worden opgelost en een boom maakt een achterwaartse doorloop om waarden te verwijderen mogelijk, gevolgd door een voorwaartse waardetoekenning zonder terug te keren. Cycli vereisen meer werk, maar een kleine cyclusdoorbrekende knopenverzameling of een boomdecompositie met een kleine breedte kan dat werk beperken. Deze methoden verbinden de graafstructuur met de tijd die nodig is om een consistente waardetoekenning te vinden.
5.1 Splits onafhankelijke deelproblemen af en los CSP's met een boomstructuur op
Een constraintgraaf kan kleinere problemen binnen een groot probleem zichtbaar maken. Onafhankelijke componenten kunnen afzonderlijk worden opgelost en voor acyclische componenten bestaat een bijzonder efficiënt algoritme met een achterwaartse doorloop om waarden te verwijderen en een voorwaartse doorloop om waarden toe te kennen.
Splits niet-verbonden componenten
Een samenhangende component is onafhankelijk als geen constraint haar variabelen met een andere component verbindt. Los elke component op en combineer daarna één oplossing van elke component. Als een component onvervulbaar is, is het volledige CSP onvervulbaar. Op de kaart van Australië staat Tasmanië los van het vasteland.
Met n variabelen verdeeld in onafhankelijke groepen van grootte c kost het vinden van één volledige waardetoekenning werk in de orde van in plaats van . Voor 60 variabelen met elk twee mogelijke waarden, verdeeld in drie groepen van 20, bekijken afzonderlijke uitputtende zoekprocessen maximaal waardetoekenningen in plaats van ongeveer . Om elke gecombineerde oplossing op te sommen, zouden de combinaties nog steeds moeten worden opgesomd; de besparing betreft het oplossen van de deelproblemen.
Orden een boom vanaf de wortel
Een binair CSP heeft een boomstructuur als de constraintgraaf acyclisch is. Een samenhangende boom heeft één pad tussen elk paar variabelen; een bos bevat afzonderlijke bomen. Pas eerst unaire beperkingen toe. Kies een willekeurige wortel en orden variabelen zo dat elke ouderknoop vóór zijn kindknopen komt.
Gerichte boogconsistentie vereist in deze volgorde dat elke eerdere variabele ondersteuning heeft in elke latere aangrenzende variabele. In een boom zijn die latere aangrenzende variabelen de kindknopen. De richting van ondersteuning loopt van ouderknoop naar kindknoop, ook al verwerkt het algoritme kindknopen vóór ouderknopen.
Verwijder waarden achterwaarts en ken waarden voorwaarts toe
- Lees de volgorde achterwaarts, zonder de wortel. Herzie voor elke kindknoop de boog van de ouderknoop naar die kindknoop. Verwijder waarden zonder ondersteuning uit het domein van de ouderknoop.
- Als een domein leeg raakt, meld dan dat er geen oplossing is.
- Lees de volgorde voorwaarts. Kies een willekeurige overgebleven waarde voor de wortel en geef daarna elke kindknoop een waarde die verenigbaar is met de toegekende waarde van de ouderknoop.
De nakomelingen van de kindknoop zijn al verwerkt wanneer de ouderknoop wordt herzien. Een overgebleven waarde van de ouderknoop heeft dus ondersteuning in elke kindknoop en elke waarde van een kindknoop heeft al ondersteuning verder naar beneden. Verschillende kindtakken zijn niet door verbindingen met elkaar verbonden, zodat die ondersteunende waarden onafhankelijk kunnen worden gekozen. Daarom hoeft de voorwaartse doorloop niet terug te keren.
Volg de workshopboom
Leg vast in het workshoprooster en verwijder 1 uit de domeinen van de andere workshops. De resterende graaf is het pad B–A–D–E, met domeinen en constraints .
Kies wortel A en volgorde A, B, D, E. De achterwaartse doorloop herziet en daarna , zonder wijzigingen. Ten slotte verwijdert de waarde 3 uit A omdat B geen grotere waarde heeft. Voorwaarts waarden toekennen geeft . Als je terugplaatst, krijg je het volledige rooster.
Voor n variabelen met maximale domeingrootte d herziet de achterwaartse doorloop bogen met elk maximaal kosten, wat tijd oplevert. De garantie hangt af van de afwezigheid van cycli. Een cyclus kan afzonderlijke kindtakken verbinden en de onafhankelijkheid tenietdoen die deze lokale keuzes veilig maakte.
Belangrijkste punten
- Niet-verbonden componenten kunnen onafhankelijk worden opgelost en gecombineerd.
- De boommethode dwingt eerst unaire beperkingen af en ordent ouderknopen vóór kindknopen.
- De achterwaartse doorloop herziet bogen van ouderknoop naar kindknoop en verwijdert waarden uit het domein van de ouderknoop.
- De voorwaartse doorloop kiest verenigbare waarden zonder terug te keren.
- De gebruikelijke tijdsgrens voor een CSP met boomstructuur is .
5.2 Herleid problemen met een bijna-boomstructuur tot bomen
Een graaf met enkele cycli kan toch voldoende op een boom lijken om efficiënt te worden opgelost. Conditioneren op een cyclusdoorbrekende knopenverzameling kent eerst waarden toe aan geselecteerde variabelen; boomdecompositie groepeert variabelen in overlappende delen. Beide geven de resterende afstemming een boomstructuur.
Conditioneer op een cyclusdoorbrekende knopenverzameling
Een cyclusdoorbrekende knopenverzameling is een verzameling variabelen waarvan de verwijdering een boom of bos overlaat. Controleer elke resterende cyclus, niet alleen de duidelijkst zichtbare. Voor de kaart van Australië laat het verwijderen van SA het pad WA–NT–Q–NSW–V plus de geïsoleerde knoop T over. Voor de workshopgraaf laat het verwijderen van C het pad B–A–D–E over.
Voor elke waardetoekenning aan de cyclusdoorbrekende knopenverzameling die aan de constraints binnen die verzameling voldoet:
- Verwijder onverenigbare waarden uit de resterende domeinen.
- Los elke resterende boom op door achterwaarts waarden te verwijderen en voorwaarts waarden toe te kennen.
- Als alle bomen een oplossing hebben, combineer hun waardetoekenningen dan met de waarden van de knopenverzameling. Probeer anders een andere waardetoekenning aan die verzameling.
In het workshopprobleem laat een oplosbare boom over. Bij moeten A en B uit komen en dwingt de waarden af. D moet zowel van A als van C verschillen, wat geeft. E kan geen 1 zijn en moet van C en D verschillen, waardoor geen waarde overblijft. Bij moeten A en B gelijk zijn aan 1 en 2; D moet dan 2 zijn, waardoor opnieuw geen waarde voor E overblijft.
Bij een cyclusdoorbrekende knopenverzameling van grootte c zijn er maximaal waardetoekenningen, elk gevolgd door een boomprobleem met kosten . Het totaal is . Een kleine c maakt dit bruikbaar; de kosten blijven exponentieel in c. Het vinden van een kleinste cyclusdoorbrekende knopenverzameling is NP-moeilijk, maar ook een geldige verzameling die niet de kleinste is, geeft een correcte procedure.
Verbind overlappende zakken
Een boomdecompositie rangschikt verzamelingen variabelen, zakken genoemd, in een boom. Die moet aan drie voorwaarden voldoen:
- Elke variabele komt in een zak voor.
- Het variabelenbereik van elke constraint past binnen minstens één zak.
- De zakken die een bepaalde variabele bevatten, vormen een samenhangend deel van de zakkenboom.
De derde regel is de lopende-intersectie-eigenschap. Als X aan beide uiteinden van een pad van zakken voorkomt, moet X op het hele pad voorkomen. Anders kunnen ver uit elkaar liggende zakken inconsistente waarden voor X kiezen zonder een tussenliggende controle op overeenstemming.
De lokaal geldige waardetoekenningen van elke zak worden waarden van een megavariabele. Aangrenzende zakken moeten overeenkomen op gedeelde variabelen. De resulterende boom stemt de lokale oplossingen op elkaar af. Voor een driehoek X–Y–Z–X plus verbinding Z–W dekken de zakken en elke verbinding en komen ze overeen op Z.
De boombreedte van de decompositie is de grootste zakgrootte min 1. De boombreedte van een graaf is het minimum over geldige decomposities. Voor breedte w is de gebruikelijke CSP-grens . Een vaste begrensde breedte houdt de exponent onder controle.
Verwijder waardesymmetrie
Als kleurnamen geen bijzondere betekenis hebben, blijft de geldigheid behouden als je rood, groen en blauw verwisselt. De zes oplossingen voor het Australische vasteland zijn zes hernoemingen van één patroon. Door de volgorde NT vóór SA vóór WA vast te leggen in de kleurvolgorde rood, groen, blauw, behoud je één vertegenwoordiger. Zo'n symmetriedoorbrekende constraint is alleen geldig als de hernoeming de oorspronkelijke regels behoudt. Een regel die vereist dat een bepaalde regio rood is, maakt die kleur bijzonder en verandert welke verwisselingen symmetrieën blijven.
Belangrijkste punten
- Een cyclusdoorbrekende knopenverzameling moet elke cyclus doorbreken.
- Conditioneren probeert waardetoekenningen aan de cyclusdoorbrekende knopenverzameling en lost het resterende bos op.
- De kosten van conditioneren zijn exponentieel in de grootte van de cyclusdoorbrekende knopenverzameling.
- Boomdecomposities dekken variabelen en constraints en voldoen aan de lopende-intersectie-eigenschap.
- Boombreedte is de maximale zakgrootte min één, voor de graaf geminimaliseerd over decomposities.
- Doorbreek waardesymmetrie alleen voor hernoemingen die de oorspronkelijke constraints behouden.
Constraintvervullingsproblemen: voorbeelden
1Bouw en controleer een CSP-model
13 stappen
- 1IntroductieZet een taak om in keuzes
Een oplosser heeft een precieze beschrijving nodig van wat kan worden gekozen en welke combinaties werken. Die beschrijving bestaat uit een verzameling variabelen met waardedomeinen en constraints die elk een variabelenbereik hebben. Elke fout daarin werkt door in elk zoekproces. Bouw een klein rooster en vergelijk dat vervolgens met toewijzings- en puzzelmodellen. Het doel is de beslissingen en hun afhankelijkheden zichtbaar te maken voordat je het probleem probeert op te lossen.
- 2UitlegBenoem elke beslissing
Laat A en B tijdvakken voor workshops zijn, elk in . A moet voorafgaan aan B, dus schrijf je . De variabelen zijn de tijdvakkeuzes van de workshops; de getallen zijn waarden.
Het variabelenbereik van de constraint bestaat uit A en B. De constraintrelatie staat de paren toe. Een oplosser kan die tupellijst of de volgorderegel gebruiken om een kandidaat te testen.
- 3VoorbeeldControleer een mogelijke waardetoekenning
Met alleen is de waardetoekenning gedeeltelijk en consistent. De keuze maakt haar volledig, maar schendt de volgorderegel. De keuze geeft daarentegen een volledige, consistente waardetoekenning.
Dit zijn afzonderlijke controles: elke variabele heeft een domeinwaarde nodig en aan elke constraint moet worden voldaan. Een gedeeltelijke waardetoekenning kan de huidige controles doorstaan en toch geen mogelijke voltooiing toelaten.
- 4UitdagingKan de gedeeltelijke keuze worden voltooid?
Drie variabelen X, Y en Z hebben domein en constraints . Aan X is 1 toegekend. Kan deze consistente gedeeltelijke waardetoekenning worden uitgebreid tot een volledige waardetoekenning?
---reveal---
Nee. X alleen schendt geen constraint. Als je de waardetoekenning voltooit, moeten Y en Z allebei 2 zijn, wat hun ongelijkheid schendt. Huidige consistentie en mogelijke voltooiing zijn verschillende eisen.
- 5VerbandLees afhankelijkheden af uit de graaf
Een binaire constraintgraaf plaatst één knoop bij elke variabele en een verbinding bij elk paar met een constraint. De driehoek uit de opgave laat drie keuzes zien die elkaar beïnvloeden. Een geïsoleerde variabele heeft geen binaire afhankelijkheid van een andere variabele.
Deze graaf ondersteunt latere methoden: het verwijderen van waarden volgt verbindingen en niet-verbonden componenten kunnen onafhankelijk worden opgelost. Een constraint van hogere orde vereist dat het volledige variabelenbereik wordt weergegeven, bijvoorbeeld met een afzonderlijke constraintknoop.
- 6UitlegKoppel de regel aan het variabelenbereik
Een unaire regel beperkt één domein: verwijdert het vroegste tijdvak voor Ethiek. Een binaire regel verbindt twee variabelen: ordent workshops. Een regel van hogere orde zoals verbindt drie keuzes.
Een globale constraint geeft een benoemde regel over een groep met een variabel aantal leden. Alldiff vereist dat elke waarde in het variabelenbereik verschilt van elke andere waarde.
- 7VoorbeeldWaarom Alldiff behouden?
Drie rapportvariabelen staan elk beoordelaars 1 en 2 toe. Elk paar kan verschillende beoordelaars krijgen, maar drie rapporten kunnen geen drie verschillende beoordelaars uit een verzameling van twee gebruiken.
Alldiff maakt dit tekort op groepsniveau zichtbaar. De vorm met paarsgewijze ongelijkheden heeft dezelfde oplossingen, maar afzonderlijke controles van paren kunnen de tegenspraak missen. De representatie beïnvloedt welke inferentie een oplosser kan uitvoeren.
- 8UitdagingEis of voorkeur?
Een ruimteplan moet ervoor zorgen dat bijeenkomsten binnen de capaciteit blijven. Een organisator geeft de voorkeur aan een ruimte dicht bij de ingang, maar er is een geschikte ruimte verder weg beschikbaar. Moet de keuze voor de verder gelegen ruimte het plan onhaalbaar maken?
---reveal---
Nee. Capaciteit is een harde eis, terwijl de locatie een zachte voorkeur is. De verder gelegen ruimte kan voorkeurskosten krijgen zonder het plan ongeldig te maken. Voor haalbaarheid moet nog steeds aan elke harde regel worden voldaan.
- 9VoorbeeldModelleer de workshopdag
Gebruik variabelen A–E voor Python voor beginners, Python voor gevorderden, Statistiek, Databases en Ethiek. Elke variabele krijgt tijdvak 1, 2 of 3.
Gezamenlijke deelnemers geven . De beginnersworkshop gaat vooraf aan de gevorderdenworkshop, dus . Ethiek kan niet in tijdvak 1, dus . Elke regel verbindt precies de beslissingen waarop die betrekking heeft.
- 10VoorbeeldControleer het volledige rooster
Probeer . De zes paren met gezamenlijke deelnemers verschillen. De beginnersworkshop is vóór de gevorderdenworkshop en Ethiek is niet in de ochtend. Elke workshop heeft een toegestaan tijdvak, dus is dit een oplossing.
B en D delen tijdvak 3. Dat is toegestaan omdat geen constraint ze verbindt. Een extra regel die vereist dat elke workshop verschilt, zou dit geldige rooster afwijzen.
- 11UitlegSchrijf niet-overlapping correct op
Als taak X 20 minuten duurt en taak Y 35, staat hun gedeelde machine beide volgorden toe:
Elk alternatief vergelijkt één eindtijd met de andere begintijd. Met “en” zouden beide taken met een positieve duur aan elkaar vooraf moeten gaan. Gebruik alleen een enkele voorrangsregel als de taakvolgorde werkelijk vastligt.
- 12UitdagingBouw een toewijzingsmodel
Drie rapporten hebben drie verschillende beoordelaars nodig. Beoordelaar 2 heeft een belangenconflict met rapport A. Welke variabelen, domeinen en constraints geven de taak weer?
---reveal---
Gebruik één variabele per rapport met beoordelaars 1–3 als waarden. Verwijder 2 uit het domein van A en pas Alldiff toe op alle drie de rapporten. Dit zijn een unaire geschiktheidsbeperking en een globale regel die verschillende waarden vereist; het model geeft elk rapport precies één beoordelaar.
- 13SamenvattingControleer het model voordat je zoekt
Bepaal welke beslissingen nodig zijn, noem hun toegestane waarden en schrijf de werkelijke eisen ervoor op. Controleer een geldig en een ongeldig geval. Harde regels bepalen de haalbaarheid; voorkeurskosten sturen de optimalisatie. De keuze van variabelen moet deze regels gemakkelijk uit te drukken maken.
2Volg en verbeter backtracking
14 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieBouw een oplossing op, één keuze tegelijk
- 2KernpuntEén volgende variabele is genoeg
- 3VoorbeeldBegin het zoeken met een vaste volgorde
- 4VoorbeeldHerken het doodlopende zoekpad
- 5UitdagingWelke aanroep probeert een andere waarde?
- 6UitlegKies de variabele met de grootste kans op mislukking
- 7VoorbeeldLaat domeinen de workshopvolgorde bepalen
- 8KernpuntHoud opties open voor de waarde
- 9UitdagingKies een waarde na de variabele
- 10VoorbeeldSla een niet-gerelateerde beslissing over
- 11UitlegVoer oorzaken terug door het zoekproces
- 12VoorbeeldLeer een mislukte combinatie
- 13UitdagingBreng ordening en leren met elkaar in overeenstemming
- 14SamenvattingOnderscheid de verbeteringen van het zoeken
3Volg het verwijderen van waarden van één beslissing tot een groepsconflict
17 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieVolg wat een domeinwijziging inhoudt
- 2UitlegVerwijder waarden bij directe buren
- 3VoorbeeldBekijk de gemiste wisselwerking
- 4UitdagingHerstel precies de juiste waarden
- 5UitlegOndersteuning wordt van begin- naar eindknoop gecontroleerd
- 6VoorbeeldBegin een keten van gevolgen
- 7VoorbeeldVoltooi de boogconsistente afsluiting
- 8TipZet bogen die ondersteuning kunnen verliezen in de wachtrij
- 9UitdagingWat betekent een afsluiting met niet-lege domeinen?
- 10VerbandHandhaaf consistentie tijdens het zoeken
- 11UitlegControleer een paar ten opzichte van een derde variabele
- 12KernpuntWaarom sterke consistentie belangrijk is
- 13VoorbeeldReserveer een paar waarden
- 14VoorbeeldScherp numerieke grenzen in beide richtingen aan
- 15UitdagingOntdek een tekort in een groep
- 16UitdagingKies de inferentie die de mislukking verklaart
- 17SamenvattingLees elke garantie nauwkeurig
4Herstel een bord en ontsnap aan een plateau
11 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieHerstel een volledige kandidaat
- 2UitlegKies een variabele in een geschonden constraint
- 3VoorbeeldZoek aanvallen op het bord
- 4VoorbeeldBeoordeel de mogelijke rijen van één dame
- 5UitdagingNegeer de constante achtergrond
- 6VoorbeeldBereik een toestand zonder verbeterende stap
- 7VoorbeeldGebruik een zijwaartse stap om herstel mogelijk te maken
- 8TipStem de ontsnappingsmethode af op de hindernis
- 9UitdagingKies een oplosser om onoplosbaarheid vast te stellen
- 10VerbandHerstel en beperk de verstoring
- 11SamenvattingBeoordeel het resultaat van herstel
5Los bomen op en beheers de resterende cycli
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieGebruik de graaf om het werk te verminderen
- 2UitlegLos onafhankelijke componenten afzonderlijk op
- 3UitlegStel de boomvolgorde vast
- 4VoorbeeldVerwijder achterwaarts waarden uit de workshopboom
- 5VoorbeeldKen de overgebleven waarden voorwaarts toe
- 6UitdagingHerken een omgekeerde boog
- 7UitlegDoorbreek elke cyclus met een knopenverzameling
- 8VoorbeeldProbeer de cyclusdoorbrekende knopenverzameling van de workshops
- 9KernpuntKleine cyclusdoorbrekende knopenverzamelingen beperken de exponent
- 10UitlegVervang cycli door overlappende zakken
- 11UitdagingControleer het pad van zakken
- 12VerbandLees de kosten af uit de zakgrootte
- 13VerbandVerwijder equivalente hernoemingen van kleuren
- 14UitdagingCombineer een cyclusdoorbrekende knopenverzameling met de boomgarantie
- 15SamenvattingControleer de structurele voorwaarde
Constraintvervullingsproblemen: oefenvragen
Set 1: Volg propagatie en onderzoek mislukt zoeken10 Oefenvragen
Vraag 1 van 10
Toon antwoordVerberg antwoord
Vraag 2 van 10
Toon antwoordVerberg antwoord
Vraag 3 van 10
Toon antwoordVerberg antwoord
Vraag 4 van 10
Toon antwoordVerberg antwoord
Vraag 5 van 10
Toon antwoordVerberg antwoord
Vraag 6 van 10
Toon antwoordVerberg antwoord
Vraag 7 van 10
Toon antwoordVerberg antwoord
Vraag 8 van 10
Toon antwoordVerberg antwoord
Vraag 9 van 10
Toon antwoordVerberg antwoord
Vraag 10 van 10
Toon antwoordVerberg antwoord
Set 2: Modelleer keuzes en volg de basisalgoritmen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 3: Combineer beslissingen, inferentie en herstel10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Set 4: Pas de methoden toe op nieuwe constraintpatronen10 Oefenvragen
Sla deze les op om elk antwoord te zien en elke set te oefenen.
Vraag 1 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
AC-3
Achterwaartse boomdoorloop
Alldiff
B
Binaire constraint
Boogconsistentie
Boogconsistentie handhaven
Boogherziening
Boombreedte
Boomdecompositie
C
Chronologische backtracking
Commutativiteit
Conditioneren op een cyclusdoorbrekende knopenverzameling
Conflictgestuurd terugspringen
Conflictverzameling
Consistente waardetoekenning
Constraint van hogere orde
Constraintgraaf
Constraintrelatie
Constraints leren
Constraintvervullingsprobleem
Constraintweging
CSP met een boomstructuur
Cyclusdoorbrekende knopenverzameling
D
Disjunctieve constraint
Domein
F
Formulering met volledige kandidaatoplossingen
G
Gefactoriseerd model
Gerichte boogconsistentie
Gesimuleerd afkoelen
Globale constraint
Graadheuristiek
Grensconsistentie
Grenspropagatie
H
Harde constraint
Herstellogboek
Heuristiek van de minste resterende waarden
K
k-consistentie
Knoopconsistentie
Kritieke constraintratio
L
Leeg domein
Lokaal minimum
Lopende-intersectie-eigenschap
M
Minimaleconflictenheuristiek
Minst beperkende waarde
N
Naakt paar
O
Onafhankelijke component
Ondersteunende waarde
Online herstel
Oplossing
Optimalisatieprobleem met constraints
P
Padconsistentie
Plateau
Principe van vroeg falen
S
Sterke k-consistentie
Symmetriedoorbrekende constraint
T
Taboezoeken
Terugspringen
Toewijzingsprobleem
U
Unaire constraint
V
Variabele
Variabele in een geschonden constraint
Variabelenbereik van een constraint
Verboden combinatie
Volledige zoekmethode
Voorrangsconstraint
Voorwaartse boomdoorloop
Voorwaartse controle
W
Waardesymmetrie
Werkplaatsplanning
Willekeurige herstart
Z
Zachte constraint
Zijwaartse stap
Zoeken met backtracking
Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.