圖論學習-序列是否可圖化(2)

來源:互聯網
上載者:User


    上次學習了havel-hakimi定理判斷一個度數序列是否可圖,http://blog.csdn.net/wangyanphp/article/details/8834608

(Havel-Hakimi 定理)

由非負整數組成的非增序列s:d1, d2, …, dn(n ≥ 2, d1 ≥ 1)是可圖的,若且唯若序列
                  s1: d2 – 1, d3 – 1, …, dd1+1 – 1, dd1+2, …, dn
是可圖的。序列s1 中有n-1 個非負整數,s 序列中d1 後的前d1 個度數(即d2~dd1+1)減1 後構成
s1 中的前d1 個數

為什麼要求是非增序列呢?這樣的話,每次都得排序。然後寫了一個方法,不用排序,不知道對不對,希望讀者指教。


//參數是:序列元素數,序列(度數),返還矩陣bool Graphic(int nVertex, int* degree ,int** Edge){/*序列中的非零數,代表的是除去主元元素還剩多少非零元素,例如   4,3,1,5,4,2,1,第一次是除去4之後的非零元素,第二次是除去3之後的非零元素*/int nNonzeroVertex=nVertex;for(int i=0;i<nVertex;++i){if(degree[i]==0)//如果元素為零則跳過,不以此元素作為主元continue;//非零元素除去這個的主元,代表剩餘非零元素--nNonzeroVertex;if(degree[i]>nNonzeroVertex)return false;for(int j=1;j<=degree[i];++j){if(degree[i+j]==0){degree[i]++;//此處的degree[i]不是代表i的度數,而是後面有的哪幾個元素需要減continue;}//如果某一非零元素度為1,那麼減去1之後,將會變為0,所以非零元素減1if(degree[i+j]==1)--nNonzeroVertex;--degree[i+j];Edge[i][i+j]=Edge[i+j][i]=1;}}return true;}





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.