Mathematica實(shí)戰(zhàn)范例:動(dòng)態(tài)演繹歐拉回路
生成圖形 歐拉回路就是說(shuō)圖中存在一條回路,該回路恰巧通過(guò)每條邊一次。在這個(gè)小范例中,讓我們看看如何動(dòng)態(tài)演繹歐拉回路。 首先我們來(lái)生成一個(gè)Graph來(lái)展示,為了給每個(gè)頂點(diǎn)顯示標(biāo)簽,我們還指定了Ima
生成圖形
歐拉回路就是說(shuō)圖中存在一條回路,該回路恰巧通過(guò)每條邊一次。在這個(gè)小范例中,讓我們看看如何動(dòng)態(tài)演繹歐拉回路。
首先我們來(lái)生成一個(gè)Graph來(lái)展示,為了給每個(gè)頂點(diǎn)顯示標(biāo)簽,我們還指定了ImagePadding選項(xiàng)。
檢查圖形問(wèn)題
在我們繼續(xù)求解之前,先看一看上面的圖形是否存在什么問(wèn)題。如果你仔細(xì)觀察的話,會(huì)發(fā)現(xiàn)部分的標(biāo)簽并未顯示完整。這里需要補(bǔ)充一個(gè)選項(xiàng)ImagePadding,如果我們?cè)O(shè)置一個(gè)較大的值便可以解決此類問(wèn)題。
使用FindEulerianCycle命令求解
在Mathematica下想要求解歐拉回路非常容易,因?yàn)橹苯佑梢粋€(gè)命令可以幫助我們求出答案來(lái),就是FindEulerianCycle命令。下面我們用這個(gè)命令看看能否得出上面圖的歐拉回路。
答案如此輕松地求解出來(lái)了,您可以按照輸出的結(jié)果按圖索驥地走一遍。但是請(qǐng)別忘記,我們是在用Mathematica下,在前進(jìn)一點(diǎn),把我們的結(jié)果動(dòng)態(tài)地顯示出來(lái)。為此,我們還要做一點(diǎn)準(zhǔn)備工作,將結(jié)果賦值給變量,并且求出初始的點(diǎn)來(lái),還有總共有多少條邊。
高亮顯示中間步驟
現(xiàn)在我們想把中間的步驟在圖中高亮顯示。HighlightGraph是專門用來(lái)高亮顯示的命令,其實(shí)這個(gè)命令非常簡(jiǎn)單,如下圖所示,假設(shè)想要高亮顯示點(diǎn)1、點(diǎn)2以及點(diǎn)1到點(diǎn)2的邊,只需將這些要高亮顯示的內(nèi)容用列表組織起來(lái)就好了。
動(dòng)態(tài)演繹歐拉回路
好,回到我們的問(wèn)題之中。每次取出前n條邊,這樣就可以實(shí)現(xiàn)動(dòng)態(tài)演繹歐拉回路。