• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 51, 文章 - 1, 評論 - 41, 引用 - 0
            數據加載中……

            拼圖游戲

             

                  本文討論如何判斷拼圖游戲中圖形是否可以還原。

            1是一個3X3的數字拼圖

            1

            3

            2

            6


            5

            4

            7

            8

            1

            要還原成圖2

            1

            2

            3

            4

            5

            6

            7

            8


            2

                  將問題一般化,在M*N的方格里有M*N-1個不同元素和一個空元素,只有空元素可以與上下左右相鄰的元素交換位置。M*N方格中M*N-1個元素和一個空元素的位置確定一個圖形。拼圖游戲的問題是:一個圖形經過一連串的交換能否得到另一個圖形,如何得到。從交換方式的可逆性看出這種關系滿足等價三性質,如果圖形A通過交換變成圖形B我們則稱它們是等價的。把M*N-1個元素用1M*N-1編號,空元素編號0。然后展成一個排列。每個圖形對應一個排列。確定了展開方式,圖形和排列是一一對應的。這里用到的展開方式是行優先的順序(其他方式展開也能到相應的結果)。將例1的兩個圖形展開有:圖1對應1 3 2 6 0 5 4 7 8,圖2對應1 2 3 4 5 6 7 8 0

                  定理1圖形A與圖形B等價的充要條件圖形A的排列的逆序數加上0元素行號和列號的奇偶性等于圖形B的排列的逆序數加上0元素行號和列號的奇偶性。為方便表述,把圖形排列的逆序數加上0元素行號和列號的奇偶性稱為圖形的奇偶性。

                  先看定理1如何起作用,圖1:展開的排列 1 3 2 6 0 5 4 7 8,它的逆序數為80元素行號為2,列號為2。逆序數加行號,列號的奇偶性為偶。圖2:展開的排列 1 2 3 4 5 6 7 8 0,它的逆序數為80元素行號為3,列號為3。逆序數加行號,列號的奇偶性為偶。兩個圖形的奇偶性相同,根據定理1判斷它們等價。

                  首先證明必要性,即如果圖形A圖形B等價,則圖形A的奇偶性等于圖形B奇偶性。

                          0元素和某個元素交換位置,則排列的逆序數的奇偶性就改變一次。交換后0元素的行號或者列號會加1或減1,即行號,列號之和的奇偶性也改變一次。這說明拼圖的交換方式不改變圖形的奇偶性,也說明拼圖中至少有兩組等價類,奇偶性不同的圖形不等價。

                  下面證明充分性,如果圖形A的奇偶性等于圖形B的奇偶性,則圖形AB等價

                  如果證明了拼圖只有兩組等價類,從必要性的證明過程可知,奇性圖形是一組等價類,偶性是一組。從而證明了充分性。

                  先考慮一般的排列1 2 3 ... N。某個元素連續與后面M相鄰的元素交換位置,稱為向后M步移動。如排列:1 2 3 4 5 6。元素2向后3步移動,排列變成1 3 4 5 2 6。同樣的方式定義向前M步移動。如果排列A能夠通過有限向前M步移動和向后M步移動變成排列B,稱排列A與排列B M步等價。容易看出這也是等價關系。

                  引理1任何一個1N的排列M步等價于1 2 ... N-M...)。括號里是N-M+1N某個排列

            證明:如果N=M,這顯然成立。

            假設N=k時成立,下面證明k+1的情況。

            1元素的位置記為i

            情況1:假設i=1,顯然,余下的元素減1,就變成N=k的境況,得證。

            情況2:如果1<i<=M,則元素1前面的元素向后M移動,變為情況1

            情況3如果i>M,則元素1有限次向前M步移動,使i1<=i<=M,可變成情況12

            從而得證。
            M=2時,只有兩組等價類。由于移動不改變排列的奇偶性,從而奇排列是一組等價類,偶排列是一組等價類。


            考慮N*M拼圖
            N=M=2,窮舉法可證明只有兩組等價類。

            NM不同時為2時,設N不等于2(如果N等于2M不等于2可顛倒行列討論)。

            只考慮第二行最后一個元素是空元素的情形,因為空元素在其他位置總可以等價某個空元素在第二行最后一個元素的圖形。不考慮空元素以之字形方式展開圖形,即第一行最后一個數字和第二行倒數第二個數字相連。如:

            1

            2

            4

            3

            5


            3

            展開成12453

            下面證明兩行拼圖的交換方式可以實現排列的向前2向后2移動。

            要實現元素a向前2步移動,則可順著展開的方式循環移動拼圖,使a在第一行第二列的位置,使空元素在第二行第二列的位置,此時可把元素i可與空元素對換。然后再沿著展開的順序還原拼圖。

            例如:3的元素4向前2步移動。可以如下操作,

            2

            4

            5

            1


            3

            4

            2


            5

            1

            4

            3

            5

            4

            1

            2

            3

            5


            6

            展開41253。實現了向前2步移動。

            使i在第二行第二列的位置,使空元素在第一行第二列的位置可以實現向后2步移動。根據引理1及,兩行拼圖可以分成兩組等價類。

            假設M=k圖形可以分成兩組等價類,下面證明M=k+1

            只需要證明任何M=k+1圖形總等價于第一行元素為1 2 ... N的某圖形即可。

            如果這N個元素都在第一行,把空元素移到第二行,從上面的證明可知,交換兩個不同的非空元素,圖形的奇偶性改變,屬于不同的等價類。N大于2,第二行就有兩個非空元素可供交換。所以兩行圖形可以等價與第一行為1 2 ... N的某個圖形。

            如果1N的某個a元素不在第一行,設它在第i行。把空元素移動到i行,這樣第i行和第i-1行可以看成M=2的圖形。可以把a移動到第i-1行,并保證第i行和i-1行中1N的元素的行號不增加。有限步移動可以使1N元素全部在第一行。

            顯然M=k+1圖形的等價類數目為2

            充分性得證。

                  拼圖游戲的隨機離散中加入定理1的判斷可以保證游戲有意義,不會出現無解的情況。

            附:     windows控制臺下的數字拼圖游戲,用dev c++編譯通過。


            posted on 2007-10-04 12:34 lemene 閱讀(3707) 評論(6)  編輯 收藏 引用

            評論

            # re: 拼圖游戲  回復  更多評論   

            123456780與123450786顯然可以互變,它們的逆序數,0元素行號和列號分別是如何計算的?
            2009-03-16 12:01 | 11

            # re: 拼圖游戲  回復  更多評論   

            123456780的逆序數是8,0元素行號、列號分別是3,加起來和是14。
            123450786的逆序數是6,0元素行號是2、列號是3,加起來和是15。
            這樣算對不對?如果不對,應怎樣計算?

            2009-03-16 12:04 | 11

            # re: 拼圖游戲  回復  更多評論   

            剛才算錯了一個地方,123450786的逆序數是6,0元素行號是2、列號是3,加起來和是11。
            2009-03-16 12:05 | 11

            # re: 拼圖游戲[未登錄]  回復  更多評論   

            123456780 的逆序數8,行號3 列號3 相加 14
            123450786 的逆序數7,行號2 列號3 相加 14

            123450786的逆序數為5+2,即0和6的逆序數。
            2009-03-18 14:31 | lemene

            # re: 拼圖游戲  回復  更多評論   

            為什么N=M就顯然成立呢?
            12345和12354好像并不2步等價啊。

            我復制粘貼了你的文章到我的博客,當然說明了出處。

            你這篇文章寫的很好,受益匪淺。

            看這最后一次評論都是09年的,我這個評論也不知道你能不能看得到
            2011-09-05 21:25 | godcupid

            # re: 拼圖游戲[未登錄]  回復  更多評論   

            N=M是一種平凡情況,這時N-M=0,所以N-M+1..N就是1..N,顯然它們等價.@godcupid
            2011-09-21 21:23 | lemene
            人妻无码αv中文字幕久久琪琪布| 久久婷婷五月综合97色直播| 精品久久无码中文字幕| 99久久精品毛片免费播放| 国产成人久久777777| 久久久久久久久久久免费精品| 亚洲国产视频久久| 久久综合九色综合久99| 国产精品日韩深夜福利久久| 热久久国产欧美一区二区精品| 日韩人妻无码一区二区三区久久| 国产精品久久自在自线观看| 婷婷久久综合九色综合绿巨人| 久久久久久亚洲Av无码精品专口| 狠狠精品干练久久久无码中文字幕| 中文精品久久久久人妻| 国产精品久久久久久福利漫画| 欧美激情精品久久久久久久| MM131亚洲国产美女久久| 亚洲а∨天堂久久精品| 国产午夜久久影院| 久久久久无码精品国产| 国内精品伊人久久久影院| 精品久久久久中文字幕一区| 狠色狠色狠狠色综合久久| 亚洲国产精品成人久久| 久久婷婷人人澡人人爽人人爱| 久久99国产精品成人欧美| 久久久久久综合一区中文字幕 | 久久久久久无码国产精品中文字幕| 久久精品国产2020| 欧美国产成人久久精品| 亚洲国产成人久久综合一区77| 久久久久99精品成人片| 国产精品免费看久久久香蕉| 国产精品久久久天天影视| 久久午夜伦鲁片免费无码| 久久亚洲AV成人无码国产| 激情伊人五月天久久综合| 国产精品美女久久久久| 国产精品久久久久天天影视|