日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

竞赛图和哈密顿回路

發布時間:2024/6/21 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 竞赛图和哈密顿回路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

競賽圖和哈密頓回路

結論

對于一個競賽圖,一定有哈密頓通路

對于一個強連通競賽圖,一定有哈密頓回路

競賽圖縮點后肯定是一條鏈

哈密頓通路證明

給出偽代碼

void work() {
    int l = r = 1;
    for (int i = 2;i <= n; i++) {
        if (ed[i][l]) nxt[i] = l, l = i;
        else if (ed[r][i]) nxt[r] = i, r = i;
        else for (int j = l; ; j = nxt[j]) 
                if (a[i][nxt[j]]) { nxt[i] = nxt[j], nxt[j] = i; break; }
    }
}

我們維護 1 ~ i-1 的哈密頓路徑,考慮插入 i,如果可以接到頭尾直接加入即可。否則滿足有路徑 (l o i o r),考慮從中間找到滿足 (t o i o nxt[t]) 的位置然后把 i 插入即可,容易發現一定存在這樣一個位置。如果目前只有兩個點,顯然成立。如果不是,那么從 l 開始,滿足 (l o i),如果有 (i o nxt[l]) 直接滿足,否則滿足 (nxt[l] o i) 這樣還是原來的問題,這樣就可以用數學歸納法證了。

哈密頓回路證明

    //這個部分最好畫圖理解,圖是一個環長一條尾巴的樣子。
    r=0;//這里是緊接著上面找完通路。先把r置為0表示還沒有找到初始的環。
    for(int i=l;i;i=nxt[i])//r是環上最靠近鏈的點,r->l是環上的邊,r->nxt[r]是鏈上的邊。
        if(r){//嘗試在環中插入點i
            for(int j=l,k=r;;k=j,j=nxt[j]){
                if(a[i][j]){//在環上找到一個可以作為nxt[i]的點。
                    nxt[k]=nxt[r];//j作為了i的后繼,那么本來j的前驅k就要另找一個后繼了。(這里注意nxt[r]不一定是i,因為可能前面的一些點沒有插入成功)
                    if(k!=r)nxt[r]=l;//本來沒有連上的環上的邊要連上(k=r的話r的后繼在上一句話已經改了,不是l了)
                    l=j,r=i;break;//根據l和r的定義修改l和r
                }
                if(j==r)break;//確實有可能當前無法插入,但是后面的點一定會有插入成功的,那時這個點也就會進入環內。
            }
        }
    else if(a[i][l])r=i;//這里找到了初始的環
    nxt[r]=l;//這里把最后一條邊連上。

這個是學長的代碼,簡要說明一下

強連通的限制保證了不會有一個點向其他點都是正向邊或反向邊。

先找到一條哈密頓通路,容易發現 $2 o n $ 中至少有一個點有連向 1 的邊,否則不會強連通,設它為 x,現在我們就有了一個 (1 o x o 1) 的哈密頓回路。現在考慮一個一個加入下一個點,考慮 (x+1) 的若干中情況。

有邊 (x + 1 o 1),讓 (x) 連 (x+1),(x+1) 連 1 即可
(x+1) 對所有的 (1 o x) 都有邊,將 (x+1) 和 (x+2) 這個線段看作整體,繼續考量 (x+2),這時候只要 (x+2) 對 (1 o x) 有反向邊就可以直接插入。由于強連通,所以不可能剩下的點都沒有反向邊。
否則一定存在 (t o x o nxt[t]),可以畫圖理解一下,和上面證哈密頓通路的過程是一樣的。

競賽圖縮點證明

假設縮點完畢,容易發現一個聯通分量到另一個連通分量肯定有限制關系,所以可以變成一條鏈。

總結

以上是生活随笔為你收集整理的竞赛图和哈密顿回路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。