7/14/10 ¡ Dancing ¡Links ¡ x ¡ Doubly ¡linked ¡list ¡ ¡ ¡ ¡ ¡ ¡ ¡nodes ¡have ¡references ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡L ¡to ¡left ¡node ¡L ¡and ¡ A ¡backtrack ¡data ¡structure ¡and ¡algorithm ¡ ¡ ¡ ¡ ¡ ¡ ¡R ¡to ¡right ¡node ¡ ¡ by ¡Donald ¡Knuth ¡ (wim ¡bohm ¡cs.colostate.edu) ¡ Except ¡as ¡otherwise ¡noted, ¡the ¡content ¡of ¡this ¡presentation ¡is ¡licensed ¡under ¡the ¡Creative ¡Commons ¡Attribution ¡2.5 ¡license. ¡ Dancing ¡Links ¡ Dancing ¡Links ¡ x ¡ x ¡ Doubly ¡linked ¡list ¡ Doubly ¡linked ¡list ¡ Remove ¡x ¡ Remove ¡x ¡ x ¡ x ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡R[L[x]]=R[x] ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡R[L[x]]=R[x] ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡L[R[x]]=L[x] ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡L[R[x]]=L[x] ¡ Put ¡x ¡back ¡ x ¡ ¡notice ¡that ¡x ¡still, ¡via ¡its ¡L ¡and ¡R, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡R[L[x]]=x ¡ ¡points ¡at ¡left ¡and ¡right ¡nodes, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡L[R[x]]=x ¡ and ¡thus ¡we ¡can ¡easily ¡... ¡ 1 ¡
7/14/10 ¡ Using ¡Dancing ¡Links ¡ Why ¡reverse ¡order? ¡ y ¡ x ¡ O(1) ¡put ¡x ¡back ¡operation ¡ Works ¡in ¡following ¡ BackTrack ¡scenario ¡ ¡ ¡ ¡ ¡ ¡ ¡. ¡ we ¡have ¡created ¡a ¡“space ¡to ¡be ¡searched” ¡as ¡a ¡global ¡ ¡ ¡ ¡ ¡ x ¡ y ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡doubly ¡linked ¡data ¡structure ¡ ¡ ¡ ¡ ¡ ¡ ¡. ¡ we ¡search ¡this ¡space ¡by ¡DFS, ¡selecting: ¡taking ¡out ¡ ¡ remove ¡x ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡certain ¡options ¡and ¡putting ¡them ¡back ¡in ¡ reverse ¡order ¡ What ¡does ¡not ¡work ¡ ¡ ¡ ¡ ¡ ¡. ¡ adding ¡completely ¡new ¡options ¡ ¡ ¡ ¡ ¡ ¡. ¡ putting ¡options ¡back ¡in ¡other ¡than ¡reverse ¡order ¡ ¡ ¡ ¡ ¡ ¡ ¡ Why ¡reverse ¡order? ¡ What ¡happens ¡if ¡x ¡is ¡put ¡back ¡first? ¡ x ¡ y ¡ x ¡ y ¡ x ¡ y ¡ x ¡ y ¡ remove ¡x ¡ remove ¡x ¡ x ¡ y ¡ x ¡ y ¡ remove ¡y ¡ remove ¡y ¡ 2 ¡
7/14/10 ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ What ¡happens ¡if ¡x ¡is ¡put ¡back ¡first? ¡ Given ¡a ¡matrix ¡of ¡0-‑s ¡and ¡1-‑s, ¡find ¡a ¡subset ¡of ¡rows ¡with ¡ x ¡ y ¡ exactly ¡one ¡1 ¡in ¡each ¡column ¡of ¡A ¡ Backtrack ¡approach ¡ remove ¡y ¡ Pick ¡a ¡column ¡c, ¡pick ¡a ¡row ¡r ¡with ¡1 ¡in ¡c, ¡remove ¡columns ¡c ¡ and ¡j ¡with ¡1 ¡in ¡r ¡and ¡rows ¡with ¡a ¡1 ¡coinciding ¡with ¡1-‑s ¡in ¡r ¡ a b c d e f g reducing the problem 1 0 0 1 0 1 1 0 eg c in row 1 x ¡ y ¡ 2 1 0 0 1 0 0 1 selects subset {c,e,f} put ¡back ¡x ¡ 3 0 1 1 0 0 1 0 so remove columns c,e,f x ¡points ¡at ¡y ¡ 4 1 0 0 1 0 0 0 and row 1 and row 3 and ¡y ¡at ¡x, ¡ ¡ 5 0 1 0 0 0 0 1 because it overlaps with row 1 but ¡y ¡is ¡not ¡in ¡the ¡chain!! ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ ¡ ¡Backtrack ¡approach ¡ ¡ ¡Backtrack ¡approach ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡subset ¡{c,e,f} ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡{c,e,f} ¡ ¡rows ¡1,3 ¡and ¡cols ¡c,e,f ¡disappear ¡ ¡which ¡rows ¡and ¡cols ¡disappear? ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡2 ¡ ¡{a,d,g} ¡which ¡rows, ¡cols ¡disappear? ¡ a b c d e f g a b d g 1 0 0 1 0 1 1 0 2 1 0 0 1 0 0 1 2 1 0 1 1 3 0 1 1 0 0 1 0 4 1 0 0 1 0 0 0 4 1 0 1 0 5 0 1 0 0 0 0 1 5 0 1 0 1 3 ¡
7/14/10 ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ ¡ ¡Backtrack ¡approach ¡ ¡ ¡Backtrack ¡approach ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡ ¡{c,e,f} ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡ ¡{c,e,f} ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡2 ¡ ¡ ¡{a,d,g} ¡ ¡ all ¡rows/cols ¡disappear ¡ ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡2 ¡ ¡ ¡{a,d,g} ¡ ¡ all ¡rows/cols ¡disappear ¡ ¡ what is the problem? b is not covered, so backtrack Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ ¡ ¡Backtrack ¡ ¡ ¡Backtrack ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡{c,e,f} ¡ ¡rows ¡1,3 ¡and ¡cols ¡c,e,f ¡disappear ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡{c,e,f} ¡ ¡rows ¡1,3 ¡and ¡cols ¡c,e,f ¡disappear ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡4 ¡ ¡{a,d} ¡ ¡ ¡ ¡which ¡rows, ¡cols ¡disappear ¡now? ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡4 ¡ ¡{a,d} ¡ ¡ ¡ ¡rows ¡2,4 ¡cols ¡a,d ¡disappear ¡ a b d g b g 2 1 0 1 1 4 1 0 1 0 5 0 1 0 1 5 1 1 4 ¡
7/14/10 ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ Exact ¡sub-‑set ¡/ ¡cover ¡problem ¡ ¡ ¡Backtrack ¡ ¡ ¡Subsets ¡/ ¡rows ¡ ¡ 1,4,5 ¡ ¡ ¡provide ¡exact ¡cover! ¡ Pick ¡column ¡c, ¡ ¡row ¡1 ¡ ¡{c,e,f} ¡ ¡rows ¡1,3 ¡and ¡cols ¡c,e,f ¡disappear ¡ ¡ ¡ ¡ ¡Pick ¡column ¡a, ¡row ¡4 ¡ ¡{a,d} ¡ ¡ ¡ ¡rows ¡2,4 ¡cols ¡a,d ¡ ¡ a b c d e f g ¡ ¡ ¡ ¡Pick ¡column ¡b, ¡row ¡5 ¡ ¡{b,g} ¡ ¡ ¡ ¡row ¡5 ¡disappears ¡ 1 0 0 1 0 1 1 0 2 1 0 0 1 0 0 1 ¡ ¡ ¡ ¡ ¡ Exact ¡cover ¡accomplished! ¡ ¡ 3 0 1 1 0 0 1 0 ¡ ¡ ¡ ¡ ¡matrix ¡is ¡empty ¡ 4 1 0 0 1 0 0 0 5 0 1 0 0 0 0 1 Exact ¡set ¡cover ¡ Pentominoes ¡ A ¡pentomino ¡is ¡a ¡size ¡5 ¡n-‑omino ¡composed ¡ The ¡columns: ¡ elements ¡of ¡a ¡universe ¡ of ¡n ¡congruent ¡squares ¡connected ¡ The ¡rows: ¡ subsets ¡of ¡elements ¡in ¡the ¡universe ¡ orthogonally ¡by ¡side ¡(not ¡point ¡wise) ¡ Find ¡a ¡set ¡of ¡subsets ¡that ¡has ¡each ¡element ¡exactly ¡once ¡ Union ¡of ¡the ¡set ¡is ¡the ¡Universe ¡ Intersection ¡of ¡any ¡two ¡subsets ¡is ¡empty ¡ There ¡are ¡12 ¡different ¡pentominoes ¡when ¡ Finding ¡an ¡exact ¡cover ¡is ¡“tough” ¡ rotation, ¡and ¡mirroring ¡are ¡allowed ¡ NP-‑Complete ¡e.g. ¡when ¡each ¡subset ¡has ¡three ¡elements ¡ Great ¡candidate ¡for ¡backtrack ¡search ¡ There ¡are ¡18 ¡pentominoes ¡when ¡only ¡ Representation: ¡ row ¡column ¡doubly ¡linked ¡sparse ¡matrix ¡ rotation ¡is ¡allowed ¡ ¡ ¡ ¡ ¡only ¡containing ¡1-‑s ¡ Use ¡dancing ¡links ¡to ¡remove ¡and ¡put ¡back ¡candidates ¡ 5 ¡
7/14/10 ¡ The ¡12 ¡pentominoes ¡ Early ¡implementaKon ¡ Dana ¡Scott ¡wrote ¡a ¡backtrack ¡program ¡in ¡ 1958 ¡for ¡the ¡ Maniac ¡(4000 ¡instructions ¡/ ¡ sec) ¡ tiling ¡a ¡chessboard ¡with ¡a ¡2x2 ¡hole ¡in ¡ the ¡middle ¡with ¡the ¡12 ¡pentominoes, ¡using ¡ F ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡I ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡L ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡N ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡P ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡T ¡ each ¡pentomino ¡exactly ¡once ¡ The ¡code ¡ran ¡in ¡~3.5 ¡hours: ¡(50 ¡million ¡ instructions) ¡ U ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡V ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡W ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡X ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Y ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡Z ¡ ¡ ¡ ¡ ¡ ¡ ¡ Board ¡shapes ¡ Tiling ¡different ¡board ¡shapes ¡ Chessboard ¡with ¡2x2 ¡hole ¡in ¡middle ¡ ¡ ¡ ¡ ¡or ¡with ¡4 ¡holes ¡in ¡arbitrary ¡places ¡ Rectangles ¡ ¡ 6 ¡x ¡10 ¡ 5 ¡x ¡12 ¡ 4 ¡x ¡15 ¡ One ¡of ¡the ¡65 ¡solutions ¡ 3 ¡x ¡20 ¡ 3D ¡ ¡boxes ¡ 6 ¡
Recommend
More recommend