- 寫在前面:因為能力和記憶有限,為方便以后查閱,特寫看上去 “不太正經” 的隨筆。隨筆有 “三” 隨:隨便寫寫;隨時看看;隨意理解。
還是閑話的繼續,正值春運期間,騰訊QQ上也推出了相關紅包雨活動,其中有個叫做星運連連的游戲,就和一筆畫沒什么區別,就是下面這個:

一時興起隨便玩玩,結果一發不可收拾,也就成了寫這篇水(sui)筆的主要原因。這里先提一嘴今天的主題——歐拉道路。
1.從“一筆畫”的規則說起:
一筆畫要求玩家任選一個點作為起點,每條邊只能經過一次(一筆的思想體現在這),但每個點可以不計次數地重復經過。
這種走法畫出來的路線就是所謂的歐拉道路,即在圖的數據結構中,通過每條邊一次且僅一次的道路。
這里舉一個簡單且常見的例子:
一筆畫五角星★,我們把畫每一條線條的過程理解為通過這條道路,不難理解歐拉道路的繪制過程。
還是賦一張圖吧!(序號為划線順序,方向看箭頭)

2.關於一筆畫游戲的通解:
1)這里先介紹頂點度數的概念,了解的可自行跳過。
一筆畫游戲里的圖可以都看作無向圖 (即所有邊沒有通過方向的限定,就是邊不帶箭頭,上圖為了演示畫圖過程才加上的),每個頂點的度數等於與該頂點有關的邊的條數,就是數某個頂點周圍延伸出了幾條邊,該點的度數就為幾。
上圖 五角星★ 的5個頂點度數都為2,因為每個頂點可以通過 2 條不同的邊與除自身外的其他頂點相連。
由於度數英文是degree,頂點 v 的度數可用符號 deg(v) 表示。記圖中1號頂點為 v1,則 deg(v1)=2 。
2)這里有一個快速通關的規則:優先找到奇數度數的點並從中隨意選一個作為起點,全為偶數度隨意選擇起點即可。
因此我們只需抱着找奇度點的想法就行,為了熟悉一下頂點度數判斷,這里我們多看幾個例子(來自星運連連小游戲),奇度點相應度數已在圖上標出。

上述5個例子從任意一個奇度點開始都可以畫出歐拉道路(當然畫法不唯一)。
3)勉強來一個實操例子吧,不想看可以直接跳至可能情況說明:
起始點度為3

通關后停留時間太短沒來得及最后一張。。。
4)可能存在的情況(以 第四個例子——關卡36 進行說明):
如果按照紅色編號順序連接:

可以發現此時已經 game over了,不難想到第6步應該首先連接左下方或右下方的點。
因為至第5步結束,我們去除走過的邊,若我們繼續走6號邊至最上方頂點,去除該邊,此時找不到通往下方其他頂點的道路了,這時可稱該邊為橋 (起連接兩岸的作用,去掉后兩岸再無聯系,定義中用圖不再連通表述,這里為了方便理解)。
解決的方法是最后再走橋,僅此而已。
- 小插曲
一筆畫中所有圖奇數度頂點個數≤2,這樣才能保證歐拉道路的存在!不信自己去試試,不會且不做證明。
奇數度頂點數為2的,都是以奇度點開始奇度點收尾。
最后一本正經地胡說八道:有進有出為偶度;單進單出只能首尾,故首尾為奇度,共兩點。
