Puzzels, Blokken en Veranderbare Kunst Marc van Kreveld Instituut voor Informatica en Informatiekunde Universiteit Utrecht http://www.cs.uu.nl/~marc/composable-art/
Puzzels, Blokken, Veranderbare kunst … en meetkunde, combinatoriek en computerprogramma’s
Overzicht Voorbeelden veranderbare kunst Meetkundige puzzels & blokken Ontwerp van een ‘moeilijkste’ puzzel m.b.v. wiskunde en informatica Tellen van de mogelijkheden van veranderbare kunst m.b.v. wiskunde en informatica
Veranderbare kunstobjecten Meerdere delen Niet ‘gefixeerd’ Veranderbaar Niet: bewegend
Veranderbaar ‘wandkleed’ Latten (staven) hangen aan elkaar 54 delen
Veranderbaar schilderij 6 panelen in een box Box heeft 4 gleuven Panelen hebben gaten
Veranderbaar schilderij
Puzzels en blokken 6 stukken: 2 van 3 soorten 2 soorten zijn gespiegelden
Variatie: 8 stukken
Een puzzelidee 8 stukken, 1 voor elk hoekpunt van een kubus Aangrenzende stukken moeten passen in hun gezamenlijke ribbe Elk stuk heeft 1 hoek en 3 halve ribben
Bestaat zo’n puzzel? En hoe vinden we ‘m? Eisen aan de puzzel Alle 8 stukken anders Geen stukken die - als je ze draait - hetzelfde zijn Zo moeilijk mogelijk (unieke oplossing) Bestaat zo’n puzzel? En hoe vinden we ‘m?
Analyse van de stukken Hoeveel verschillende stukken zijn er? Er zijn 4 mogelijkheden voor halve ribben noem ze typen A, B, C, D A B A D C
Analyse van de stukken Het type van een stuk (BDD): Kies het alfabetisch gezien kleinste type (dus niet DDB of DBD, maar BDD)
Oefening Welke stukken zijn dit?
Vraagstuk (2 minuten) Hoeveel verschillende stukken zijn er? Maximaal 4 x 4 x 4 = 64, maar precies? Hint: Hoeveel met 3 dezelfde letters? Hoeveel met 2 dezelfde letters? Hoeveel met 3 verschillende letters? AAA, AAB, AAC, AAD, ABA, … gelijk +
Antwoord 3 dezelfde letters: 4 2 dezelfde letters: 4 keuzen voor dubbele letter, nog 3 over voor enkele letter: 12 3 verschillende letters: 4 keuzen welke letter niet, voor elke keuze twee spiegelvarianten (bijv. ABC en ACB): 8 + 24
Welke types passen? A en D passen altijd; B en C passen altijd Verder past niets
Extra eis Elk type halve ribbe - A, B, C en D - komt precies 6 keer voor in de puzzel
De stukken Er zijn 24 verschillende stukken, maar 4 daarvan willen we niet Er zijn ( ) = 124.970 sets van 8 verschillende stukken. Welke passen op 1 unieke wijze? 20 8
Een puzzeloplosprogramma? Per 8 stukken: Leg eerste stuk vast neer 2e stuk: 7 plekken, 3 standen 3e stuk: 6 plekken, 3 standen … Dus 7! · 37 = 11.022.480 manieren om te passen Alle 125.970 kandidaat puzzels: 1.388.501.805.600 manieren testen Kan beter door de eis met 6 halve ribben van elk type mee te nemen, en met backtracking
Andere aanpak (programma) Neem een kubus en splits alle 12 ribben op de 4 mogelijke manieren
Andere aanpak (programma) Als we weten hoe de 12 ribben gesplitst zijn, dan weten we de 8 puzzelstukken; dit geeft de 412 = 16.777.216 oplossingen van alle mogelijke kubuspuzzels! Test elk stuk op: niet AAA, BBB, CCC, DDD Test elk paar op ongelijkheid Test of A, B, C en D elk 6 x voorkomen
Andere aanpak Er blijven 1.023.360 oplossingen van puzzels over, volgens het computer-programma Laatste eis: Unieke oplosbaarheid Zoek verschillende oplossingen met dezelfde 8 stukken; zulke puzzels zijn niet uniek oplosbaar
Resultaten De 1.023.360 oplossingen zijn van 2290 puzzels die aan 3 eisen voldoen Het minimum is 24 oplossingen (34 puzzels) Het maximum is 1656 oplossingen (4 puzzels) 24 oplossingen 1 oplossing
De makkelijkste puzzel Met 1656 69 oplossingen
Vraagstuk (1 minuut) Alle 34 moeilijkste puzzels hebben de stukken AAD, ADD, BBC en BCC Is dit logisch? Verklaar N.B. Alle 4 makkelijkste puzzels hebben de stukken AAB, ABB, CCD en CDD, of AAC, ACC, BBD en BDD
Resultaten 34 verschillende puzzels zijn uniek oplosbaar, bijv. AAB, AAD, ABC, ADD, BBC, BCC, BDC, CDD AAC, AAD, ACB, ADD, BBC, BCC, BCD, BDD AAD, ACB, ACD, ADB, ADD, BBC, BCC, BDC + nog 31 puzzels
Resultaten 34 verschillende puzzels zijn uniek oplosbaar, bijv. AAB, AAD, ABC, ADD, BBC, BCC, BDC, CDD B C C B AAC, AAD, ACB, ADD, BBC, BCC, BCD, BDD AAD, ACB, ACD, ADB, ADD, BBC, BCC, BDC + nog 31 puzzels
Resultaten Er zijn 5 equivalentieklassen in de 34 uniek oplosbare puzzels Maar: is er nog verschil in moeilijkheid?
Naar een definitie van moeilijkheid Hoe lost een puzzelaar zo’n puzzel op? Waarschijnlijk: beginnen met de onderste 4 stukken = 1 cykel / ondervlak van de kubus
Naar een definitie van moeilijkheid Nadat je een onderste cykel hebt is het ‘slechts’ een puzzel met 4 stukken Moeilijkheid puzzel = Aantal goede cykels Totaal aantal cykels
Vraagstuk (5 minuten) Maak een (ruwe) schatting van de moeilijkheid van de moeilijkste puzzels Hint: Wat is het verwachte/ruw geschatte aantal cykels voor een willekeurige puzzel als je weet dat er 6 A’s, 6 B’s, 6 C’s en 6 D’s zijn?
Antwoord Aantal goede cykels: 6 Schatting totaal aantal cykels willekeurige puzzel: Leg 1 stuk neer, zeg, met AB op tafel Er passen 5 à 6 halve ribben aan de A, zeg, 5,25 Er passen 4 à 5 halve ribben aan de B, zeg, 4,5 4e stuk van de cykel moet aan 2 kanten passen: kans 1/16; de 5 resterende stukken hebben 5 x 3 = 15 geordende paren Dit geeft geschat 5,25 x 4,5 x 15/16 = 22 cykels Er zijn 8 x 3 = 24 keuzen voor eerste paar Nu tellen we elke cykel 4x Dus geschat 22 x 24/4 = 132 cykels in een puzzel Argument van de 5 a 6 halve ribben: er zijn nog 21 halve ribben beschikbaar, elk heeft kans ¼ om van juiste type te zijn, geeft 5,25. Argument 4 a 5 halve ribben: nog 18 ribben beschikbaar, elk kans ¼, geeft 4,5. Moeilijkheid moeilijkste 132/6 22
Berekenen van moeilijkheid Met een computerprogramma: de 5 echt verschillende puzzels (andere equivalentieklasse) hebben 107, 116, 116, 118 en 122 cykels Makkelijkste puzzels & maximum: 230 cykels Moeilijkheid moeilijkste puzzel = Aantal goede cykels Totaal aantal cykels 6 = 122
Nog meer puzzels
Een persoonlijke puzzel
Scharnierende puzzel
Poortjespuzzel
… tot zover de puzzels
Veranderbare kunst Vraag uit nieuwsgierigheid: hoeveel verschillende composities zijn er? Kunnen we een willekeurige compositie laten genereren door een computer? Toekomst: automatisch evalueren van ‘mooie’ composities kunst + software
Mogelijkheden tellen Fibonacci reeks: 1, 1, 2, 3, 5, 8, 13, … F(0) = 1, F(1) = 1, F(n) = F(n-1) + F(n-2) als n 2 Er zijn twee manieren om het 100ste Fibonacci getal met de computer te berekenen
Recursief Met array int Fib(n) { if ((n==0) or (n==1)) then return 1; else return ( Fib(n-1) + Fib(n-2) ); } Recursief int Fib(n) { int A[] = new int[n+1]; A[0] = 1; A[1] = 1; for (i=2; i <= n; i++) A[i] = A[i-1] + A[i-2]; return A[n]; } Met array
Efficiëntie Aantal optellingen voor eerste manier is Fib(n) -1 > 1,618n ( Fib(100) is getal met 21 cijfers) Aantal optellingen tweede manier is n -1 Tussenoplossingen die vaker nodig zijn opslaan in een array (tabel): Dynamisch Programmeren
Veranderbaar Wandkleed 3 x 3 latten van 125 cm (4 haakjes); 3 x 3 latten van 85 cm; 3 x 3 latten van 45 cm 3 x 9 latten van 5 cm (1 haakje) Aluminium & vierkant, hout & rond, zwart & vierkant op punt
Wandkleed composities tellen Alleen rechthoekig, vier-breed, geen brede gaten Tel kleurtoewijzingen en silhouetten apart
Kleurtoewijzingen tellen Voor elk willekeurig silhouet zijn er kleurtoewijzingen ( ) 27 9 ( ) 18 9 [ ( ) 9 3 ( ) 6 3 ] 3 • • •
Silhouetten tellen We hebben rijen, kolommen en latten in verschillende lengten Met een recurrente betrekking?
Silhouetten tellen Elke laag bestaat uit: één 125 cm lat, of één 85 cm lat en één 5 cm lat, of twee 45 cm latten, of één 45 cm lat en twee 5 cm latten, of vier 5 cm latten (1) (2) (1) (3) (1)
Silhouetten tellen Laat A(j,k,m,n) het aantal silhouetten zijn voor j 125 cm latten, k 85 cm latten, m 45 cm latten, n 5 cm latten A(j,k,m,n) = A(j-1,k,m,n) + 2 A(j,k-1,m,n-1) + A(j,k,m-2,n) + 3 A(j,k,m-1,n-2) + A(j,k,m,n-4)
Silhouetten tellen A(j,k,m,n) = A(j-1,k,m,n) + 2 A(j,k-1,m,n-1) + A(., ., ., .) = 0 als een argument negatief is B(j,k,m,n) = B(j-1,k,m,n) + B(j,k-1,m,n-1) + B(j,k,m-2,n) + B(j,k,m-1,n-2) + B(j,k,m,n-4) #recursieve aanroepen voor A(9,9,9,27) is B(9,9,9,27)= 7 • 1014
Silhouetten tellen A[j,k,m,n] = A[j-1,k,m,n] + 2 A[j,k-1,m,n-1] + A(., ., ., .) = 0 als een argument negatief is Dynamisch programmeren: 4-dimensionale tabel met 28,000 waarden om A[9,9,9,27] te verkrijgen
Silhouetten tellen A(1,1,1,3) = 36 A(2,2,2,6) = 3960
Diago 20 latten; 4 x 5 lengten Blokhut principe 9 uitsteeksels in achterplaat
Diago We draaien over 45 en doen alsof de achterplaat vierkant is
Diago tellen Op hoeveel manieren kunnen we 20 latten met lengten 2, 3, 4, 5 en 6 op een 10 x 10 grid leggen?
Diago tellen Veronderstel eerst dat alle latten horizontaal zijn Laat de grid grootte Z x Z zijn Welke recurrente betrekking? Laat A(i,j,k,m,n,r,c) = # manieren om i, j, k, m en n latten met lengten 2, 3, 4, 5 en 6 te plaatsen, beginnend bij rij r en kolom c, op een grid [0..Z-1] x [0..Z-1]
Diago tellen c 3-lat (0,0) Z-1 A(i,j,k,m,n,r,c) = A(i,j-1,k,m,n,r,c+3) of A(i,j-1,k,m,n,r+1,0) (of 1 of 0)
Diago tellen A(i,j,k,m,n,r,c) = #manieren met een 2-lat op (r,c) #manieren met een 3-lat op (r,c) #manieren met een 4-lat op (r,c) A(i,j,k,m,n,r,c) = #manieren met een 5-lat op (r,c) #manieren met een 6-lat op (r,c) #manieren met géén lat op (r,c) Als j > 0 en c Z-4, dan A(i, j-1, k, m, n, r, c+3), etc.
Diago tellen De definitie van A(i, j, k, l, m, n, r, c), met alle bijbehorende voorwaarden, gaat in een 7-dimensionale tabel die door een programma wordt gevuld
Diago tellen Horizontal en vertikaal: Neem alle 55 = 3125 manieren om een deelverzameling horizontalen te kiezen uit de 4+4+4+4+4 latten; rest is vertikaal #Comp = A(i,j,k,m,n,0,0) • A(4-i,4-j,4-k,4-m,4-n,0,0) 0 i,j,k,m,n 4
Tellingen voor Diago 6 x 6 grid: 0 7 x 7 grid: 2,1 • 1016
Willekeurig één genereren Hoe kunnen we random en uniform één van de 9.9 • 1031 composities genereren? Neem het dynamisch programmeren proces achterstevoren: We weten hoe A[4,4,4,4,4,0,0] is opgebouwd uit deelcomposities
Willekeurig één genereren A[3,4,4,4,4,0,2] A[4,3,4,4,4,0,3] A[4,4,3,4,4,0,4] A[4,4,4,4,4,0,0] = A[4,4,4,3,4,0,5] A[4,4,4,4,3,0,6] A[4,4,4,4,4,0,1] Dit geeft een kansverdeling van de deelcomposities
Willekeurig genereren Werkt voor Diago en het Veranderbare Wandkleed Werkt ook voor de Veranderbare Toren en Façade
Diago II
GeoMecca
Matisse’s leaves
Hexagonen
Geneste vierkanten
De toekomst Ideeën voor nieuwe puzzels Ideeën voor veranderbare kunst Automatisch evalueren hoe ‘mooi’ een compositie is 24 verschillende stukjes