精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

哈密頓回路的應(yīng)用

ss ? 來源:網(wǎng)絡(luò)整理 ? 2018-02-01 15:58 ? 次閱讀

哈密頓圖定義概念

哈密頓通路(回路)與哈密頓圖(Hamilton圖)通過圖G的每個結(jié)點一次,且僅一次的通路(回路),就是哈密頓通路(回路)。存在哈密頓回路的圖就是哈密頓圖。

1.哈密頓通路

設(shè)G=《V,E》為一圖(無向圖或有向圖).G中經(jīng)過每個頂點一次且僅一次的通路稱作哈密頓通路

2.哈密頓回路

G中經(jīng)過每個頂點一次且僅一次的回路稱作哈密頓回路

3.哈密頓圖

若G中存在哈密頓回路,則稱它是哈密頓圖

4.定義詳解:

(1)存在哈密頓通路(回路)的圖一定是連通圖;

(2)哈密頓通路是初級通路,哈密頓回路是初級回路;

(3)若G中存在哈密頓回路,則它一定存在哈密頓通路,反之不真

(4)只有哈密頓通路,無哈密頓回路的圖不交哈密頓圖;

哈密頓回路的應(yīng)用

二、判定定理

注意:目前沒有找到哈密頓圖的簡單的充要條件

(1)設(shè)無向圖G=《V,E》為哈密頓圖,V1是V的任意真子集,則(注:n階xx圖指的是n個頂點,不要迷!)

p(G-V1)《=|V1|

其中,p(G-V1)為G中刪除V1后的所得圖的連通分支數(shù)目,|V1|為V1集合中包含的頂點個數(shù)。【哈密頓圖存在的必要條件】

推論:有割點的圖一定不是哈密頓圖

設(shè)v是圖中的割點,則p(G-v)》=2,由上述定理知G不是哈密頓圖

(2)設(shè)G是n(n》=3)階無向簡單圖,若對于G中的每一對不相鄰的頂點u,v,均有

d(u)+d(v)》=n-1

則G中存在哈密頓通路。又若

d(u)+d(v)》=n

則G中存在哈密頓回路,即G為哈密頓圖。【哈密頓圖存在的充分條件,不是必要條件】

其中d(u),d(v)分別代表頂點u,v的度數(shù)。

推論:設(shè)G是n(n》=3)階無向簡單圖,若G的最小度》=n/2,則G是哈密頓圖。

由推論知,對于完全圖Kn,當(dāng)n》=3時,是哈密頓圖,完全二部圖Kr,s當(dāng)r==s》=2時是哈密頓圖。

(3)在n(n》=2)階有向圖D=《V,E》中,如果略去所有有向邊的方向,所得無向圖中含生成子圖Kn,則D中存在哈密頓通路。

推論:n(n》=3)階有向完全圖是哈密頓圖。

1.常用方法判斷是哈密頓圖:

(1)若能通過觀察找出圖G中的一條哈密頓回路,則G當(dāng)然是哈密頓圖。

(2)若一個無向圖G滿足上述(2)中的條件,一個有向圖D滿足上述(3)的推論的條件,則G、D都是哈密頓圖。

2.破壞哈密頓圖存在的必要條件,判定不是哈密頓圖:

設(shè)n階圖G是哈密頓圖,則G應(yīng)該滿足以下諸條件:

(1)G必須是連通圖;

(2)G中的邊數(shù)m必須大于等于頂點數(shù)n;

(3)若G中存在2度頂點v,即d(v)=2,則與v關(guān)聯(lián)的兩條邊ei,ej必須在G中的任何哈密頓回路上;

(4)若G中存在每條哈密頓回路中出現(xiàn)的邊,不能構(gòu)成邊數(shù)小于n的初級回路(圈);

破壞以上諸條件中的一條,都不是哈密頓圖。

哈密頓回路的應(yīng)用

隨機生成并哈密頓回路求解:

// Graph.cpp : 定義控制臺應(yīng)用程序的入口點。

//

#include “stdafx.h”

#include“Graph.h”

#include《iostream》

#include《fstream》

#include《stack》

#include《queue》

#include《limits》

using namespace std;

template《class T,class E》

int sb(int start,Graph《T,E》 &myGraph,ostream & fout)//simple backtracking 算法解決圖的最小哈密頓回路問題 v為回路的起點和終點

{

E minDistance=std::numeric_limits《E》::max();

stack《int》 myStack;

myStack.push(start);

int numVertices=myGraph.NumberOfVertices();

bool *visited=new bool[numVertices];

memset(visited,false,numVertices);

int v;

int w=-1;

while(!myStack.empty()) //棧不為空

{

v=myStack.top();

visited[v]=true;

if(w==-1)

{

w=myGraph.getFirstNeighbor(v);

}

else

{

w=myGraph.getNextNeighbor(v,w);

}

for(;w!=-1&&visited[w]==true;w=myGraph.getNextNeighbor(v,w))

{

}

if(w==-1) //未找到可行的下一個頂點

{

myStack.pop(); //回溯

w=v;

visited[v]=false;

}

else //找到可行的下一個頂點

{

myStack.push(w); //放入棧中

if(myStack.size()==numVertices)//走過所有的頂點

{

if(myGraph.getWeight(start,w)==std::numeric_limits《E》::max()) //判斷最后一個頂點有沒有回到起點的邊

{

myStack.pop();

visited[w]=false;

}

else //成功找到回路

{

//輸出回路 并記錄下回路的長度

stack《int》 temp;

while(!myStack.empty())

{

int n=myStack.top();

temp.push(n);

myStack.pop();

}

fout《《“哈密頓回路 : ”;

E distance=0;

int n=temp.top();

myStack.push(n);

temp.pop();

int last=n;

fout《《n《《“--”;

while(!temp.empty())

{

n=temp.top();

myStack.push(n);

temp.pop();

distance+=myGraph.getWeight(last,n);

last=n;

fout《《n《《“--”;

}

fout《《start《《“--”《《endl;

distance+=myGraph.getWeight(last,start);

fout《《“總長度為:”《《distance《《endl;

//記錄最短長度

if(minDistance》distance)

{

minDistance=distance;

}

//

myStack.pop();

visited[w]=false;

}

}

else

{

w=-1;

}

}

}

fout《《“最短哈密頓回路的長度為:”《《minDistance《《endl;

return 1;

}

//分支限界法求解最短哈密頓回路問題

template《class E》

struct NODE

{

int dep; //表示該結(jié)點在搜索樹的第幾層

int *vertices; //該節(jié)點力包含的各個頂點

E length; //從根到當(dāng)前結(jié)點已經(jīng)走過的路徑長度

NODE(int depth)

{

dep=depth;

vertices=new int[dep];

};

void cpy(int *&des)

{

for(int i=0;i《dep;i++)

{

des[i]=vertices[i];

}

}

bool find(int v)

{

for(int i=0;i《dep;i++)

{

if(vertices[i]==v)

return true;

}

return false;

}

};

template《class T,class E》

int bb(int start,Graph《T,E》 & myGraph,ostream & fout)

{

stack《NODE《E》》 myStack; //隊列

E minDistance=std::numeric_limits《E》::max();

int s=myGraph.getFirstNeighbor(start);

for(s=myGraph.getNextNeighbor(start,s);s!=-1;s=myGraph.getNextNeighbor(start,s))

{

NODE《E》 n(2);

n.vertices[0]=start;n.vertices[1]=s;

n.length=myGraph.getWeight(start,s);

myStack.push(n);

}

while(!myStack.empty()) //隊列不為空

{

NODE《E》 n=myStack.top();

myStack.pop();

int v=n.vertices[n.dep-1];

if(n.dep+1==myGraph.NumberOfVertices())//到了最后一層 判斷是不是哈密頓回路

{

int w;

for( w=myGraph.getFirstNeighbor(v);w!=-1;w=myGraph.getNextNeighbor(v,w))

{

if( n.find(w)==false)

break;

}

if(w!=-1)

{

if(myGraph.getWeight(w,start)《std::numeric_limits《E》::max())

{

//形成回路

fout《《“哈密頓回路為:”;

for(int i=0;i《n.dep;i++)

{

fout《《n.vertices[i]《《“ ”;

}

fout《《w《《“ ”《《start《《endl;

E tempDistance=n.length+myGraph.getWeight(v,w)+myGraph.getWeight(w,start);

fout《《“總長度為: ”《《tempDistance《《endl;

if(minDistance》tempDistance)

{

minDistance=tempDistance;

}

}

}

}

for(int w=myGraph.getFirstNeighbor(v);w!=-1;w=myGraph.getNextNeighbor(v,w))

{

if(n.find(w)==false)

{

NODE《E》 ne(n.dep+1);

ne.length=n.length+myGraph.getWeight(v,w);

if(ne.length《minDistance)

{

n.cpy(ne.vertices);

ne.vertices[ne.dep-1]=w;

myStack.push(ne);

}

}

}

}

fout《《“最短長度為 ”《《minDistance《《endl;

return minDistance;

}

int _tmain(int argc, _TCHAR* argv[])

{

Graph《char,int》 myGraph(10);

//ifstream fin(“input.txt”);

//myGraph.Init(fin);

myGraph.RandInit();//隨機初始化圖

ofstream fout(“outputsb.txt”);

//sb(0,myGraph,fout);

ofstream fout1(“outputbb.txt”);

bb(0,myGraph,fout1);

system(“pause”);

return 0;

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 哈密頓圖
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1276
收藏 人收藏

    評論

    相關(guān)推薦

    #硬聲創(chuàng)作季 2.2.1 哈密頓算子視頻

    電磁場物理量與定理
    Mr_haohao
    發(fā)布于 :2022年09月01日 20:56:14

    DNA編碼的學(xué)習(xí)

    成熟,數(shù)學(xué)上很多NP-hard問題傳統(tǒng)計算機難以有效解決,1994年,Adleman教授用脫氧核糖核苷酸分子為計算介質(zhì),以現(xiàn)代分子生物技術(shù)為手段,解決了7個定點的有向哈密頓路。總結(jié)來說就是以生化反應(yīng)來解決數(shù)
    發(fā)表于 07-23 06:05

    電子關(guān)聯(lián)對聚乙炔雙激子態(tài)的影響

    在SSH哈密頓基礎(chǔ)上,引進(jìn)擴展的Hubbard關(guān)聯(lián)能,對聚乙炔的雙激子態(tài)進(jìn)行自洽變分計算。發(fā)現(xiàn):電子關(guān)聯(lián)的引入使雙激子吸收峰一分為二,這結(jié)果與光誘致吸收實驗觀察到的瞬時雙
    發(fā)表于 11-20 12:45 ?8次下載

    LaSrAlO4中Cu2+的自旋哈密頓參量的理論分析

    根據(jù)晶體場理論,利用3d9離子在四角對稱(伸長八面體)中自旋哈密頓參量g因子的四階微擾公式以及超精細(xì)結(jié)構(gòu)常數(shù)A因子的三階微擾公式,對摻Cu2+的LaSrAlO4晶體的自旋哈密頓參量作
    發(fā)表于 05-10 12:11 ?24次下載

    ZigBee與哈密瓜不得不說的故事

    新疆哈密中蒙交界地區(qū),ZigBee網(wǎng)絡(luò)用于哈密瓜田地自動化滴灌系統(tǒng),應(yīng)用區(qū)域超過4萬畝。看致遠(yuǎn)電子工程師如何使用Zigbee分析儀為種植保駕護(hù)航。
    發(fā)表于 03-05 17:35 ?731次閱讀

    哈密頓結(jié)構(gòu)修正的控制設(shè)計方法及其應(yīng)用

    哈密頓結(jié)構(gòu)修正的控制設(shè)計方法及其應(yīng)用_曾云
    發(fā)表于 01-07 17:16 ?1次下載

    如何判斷哈密頓圖_哈密頓圖的必要條件

    本文主要介紹了如何判斷哈密頓圖_哈密頓圖的必要條件,哈密頓通路(回路)與哈密頓圖(Hamilton圖)通過圖G的每個結(jié)點一次,且僅一次的通路
    的頭像 發(fā)表于 02-01 15:43 ?5.6w次閱讀
    如何判斷<b class='flag-5'>哈密頓</b>圖_<b class='flag-5'>哈密頓</b>圖的必要條件

    哈密頓回路算法

    本文主要介紹了哈密頓回路算法以及程序設(shè)計實現(xiàn)。哈密頓圖就是從一點出發(fā),經(jīng)過所有的必須且只能一次,最終回到起點的路徑。圖中有的邊可以不經(jīng)過,但是不會有邊被經(jīng)過兩次。設(shè)一個無向圖中有N個頂點,若所有頂點的度數(shù)大于等于N/2,則哈密頓回路
    的頭像 發(fā)表于 02-01 16:11 ?9851次閱讀

    永磁同步直線電機位置控制

    針對永磁同步直線電機( PMLSM)的位置控制問題,從能量整型控制的角度進(jìn)行了研究。基于哈密頓反饋耗散控制方法,結(jié)合系統(tǒng)的物理能量特性,在dq旋轉(zhuǎn)坐標(biāo)系下建立了包含電能和動能的永磁同步直線電機閉環(huán)
    發(fā)表于 03-01 14:00 ?12次下載
    永磁同步直線電機位置控制

    模擬量子計算的未來前景將一片光明

    模擬量子計算(analog quantum computing),相對于通用量子計算,有更平易近人的物理實現(xiàn)方式,而且對于玻色采樣、搜索、哈密頓量學(xué)習(xí)、化學(xué)模擬等問題上有明顯的天然對應(yīng)方式和加速優(yōu)勢,因此是目前量子信息發(fā)展的另一個不可或缺、至關(guān)重要的領(lǐng)域。
    發(fā)表于 10-18 15:34 ?1140次閱讀

    模擬量子計算有著優(yōu)異的表現(xiàn),未來將具有廣泛的應(yīng)用前景

    模擬量子計算(analog quantum computing),相對于通用量子計算,有更平易近人的物理實現(xiàn)方式,而且對于玻色采樣、搜索、哈密頓量學(xué)習(xí)、化學(xué)模擬等問題上有明顯的天然對應(yīng)方式和加速優(yōu)勢,因此是目前量子信息發(fā)展的另一個不可或缺、至關(guān)重要的領(lǐng)域。
    發(fā)表于 11-25 11:35 ?879次閱讀

    模擬量子計算的實力前景不可限量

    模擬量子計算(analog quantum computing),相對于通用量子計算,有更平易近人的物理實現(xiàn)方式,而且對于玻色采樣、搜索、哈密頓量學(xué)習(xí)、化學(xué)模擬等問題上有明顯的天然對應(yīng)方式和加速優(yōu)勢。
    發(fā)表于 12-12 15:18 ?754次閱讀

    基于量子軟件的量子絕熱近似算法求解

    經(jīng)典近似算法求解最大割問題時,時間復(fù)雜度與圖的復(fù)雜度呈正相關(guān)。為提高求解效率,使用量子絕熱近似算法求解無向圖最大割問題哈密頓量的基態(tài),其基態(tài)對應(yīng)該問題的最優(yōu)解。該算法的時間復(fù)雜度不依賴于圖的頂點
    發(fā)表于 05-12 14:28 ?8次下載

    基于量子材料的素描5d體系

    及至今天,物理人是這樣認(rèn)識量子凝聚態(tài)對象的:電子展示了電荷、自旋、軌道三個自由度,再加上晶格的若干可變參量 (幸虧晶格自由度具有某種周期對稱性),組成了一個能量基元數(shù)不多不少的多體體系,對應(yīng)的哈密頓作用項也多了起來。
    的頭像 發(fā)表于 11-06 18:44 ?660次閱讀

    基于高光譜的不同成熟期哈密瓜堅實度研究

    哈密瓜是新疆的特色水果,目前,哈密瓜品種繁多,采收時,不同品種的成熟期不同,在成熟時的表現(xiàn)也不同,因此,簡單地通過外表來分辨哈密瓜的成熟度,會造成判別不一致,影響哈密瓜的貨架期,從而
    的頭像 發(fā)表于 03-12 15:41 ?338次閱讀
    基于高光譜的不同成熟期<b class='flag-5'>哈密</b>瓜堅實度研究