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

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

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

哈密頓回路算法

ss ? 來(lái)源:網(wǎng)絡(luò)整理 ? 2018-02-01 16:11 ? 次閱讀

概念:

哈密頓圖:圖G的一個(gè)回路,若它通過(guò)圖的每一個(gè)節(jié)點(diǎn)一次,且僅一次,就是哈密頓回路。存在哈密頓回路的圖就是哈密頓圖。哈密頓圖就是從一點(diǎn)出發(fā),經(jīng)過(guò)所有的必須且只能一次,最終回到起點(diǎn)的路徑。圖中有的邊可以不經(jīng)過(guò),但是不會(huì)有邊被經(jīng)過(guò)兩次。

與歐拉圖的區(qū)別:歐拉圖討論的實(shí)際上是圖上關(guān)于邊的可行便利問(wèn)題,而哈密頓圖的要求與點(diǎn)有關(guān)。

判定:

一:Dirac定理(充分條件)

設(shè)一個(gè)無(wú)向圖中有N個(gè)頂點(diǎn),若所有頂點(diǎn)的度數(shù)大于等于N/2,則哈密頓回路一定存在。(N/2指的是?N/2?,向上取整)

二:基本的必要條件

設(shè)圖G=《V, E》是哈密頓圖,則對(duì)于v的任意一個(gè)非空子集S,若以|S|表示S中元素的數(shù)目,G-S表示G中刪除了S中的點(diǎn)以及這些點(diǎn)所關(guān)聯(lián)的邊后得到的子圖,則W(G-S)《=|S|成立。其中W(G-S)是G-S中聯(lián)通分支數(shù)。

三:競(jìng)賽圖(哈密頓通路)

N(N》=2)階競(jìng)賽圖一點(diǎn)存在哈密頓通路。

算法

一:在Dirac定理的前提下構(gòu)造哈密頓回路

過(guò)程:

1:任意找兩個(gè)相鄰的節(jié)點(diǎn)S和T,在其基礎(chǔ)上擴(kuò)展出一條盡量長(zhǎng)的沒有重復(fù)結(jié)點(diǎn)的路徑。即如果S與結(jié)點(diǎn)v相鄰,而且v不在路徑S -》 T上,則可以把該路徑變成v -》 S -》 T,然后v成為新的S.從S和T分別向兩頭擴(kuò)展,直到無(wú)法繼續(xù)擴(kuò)展為止,即所有與S或T相鄰的節(jié)點(diǎn)都在路徑S -》 T上。

2:若S與T相鄰,則路徑S -》 T形成了一個(gè)回路。

3:若S與T不相鄰,可以構(gòu)造出來(lái)一個(gè)回路。設(shè)路徑S -》 T上有k+2個(gè)節(jié)點(diǎn),依次為S, v1, v2, 。。。, vk, T.可以證明存在節(jié)點(diǎn)vi(i屬于[1, k]),滿足vi與T相鄰,且vi+1與S相鄰。找到這個(gè)節(jié)點(diǎn)vi,把原路徑變成S -》 vi -》 T -》 vi+1 -》 S,即形成了一個(gè)回路。

4:到此為止,已經(jīng)構(gòu)造出來(lái)了一個(gè)沒有重復(fù)節(jié)點(diǎn)的的回路,如果其長(zhǎng)度為N,則哈密頓回路就找到了。如果回路的長(zhǎng)度小于N,由于整個(gè)圖是連通的,所以在該回路上,一定存在一點(diǎn)與回路之外的點(diǎn)相鄰。那么從該點(diǎn)處把回路斷開,就變回了一條路徑,同時(shí)還可以將與之相鄰的點(diǎn)加入路徑。再按照步驟1的方法盡量擴(kuò)展路徑,則一定有新的節(jié)點(diǎn)被加進(jìn)來(lái)。接著回到路徑2.

證明:

可利用鴿巢原理證明。

偽代碼:

設(shè)s為哈密頓回路的起始點(diǎn),t為哈密頓回路中終點(diǎn)s之前的點(diǎn).ans[]為最終的哈密頓回路。倒置的意思指的是將數(shù)組對(duì)應(yīng)的區(qū)間中數(shù)字的排列順序方向。

1:初始化,令s = 1,t為s的任意一個(gè)鄰接點(diǎn)。

2:如果ans[]中元素的個(gè)數(shù)小于n,則從t開始向外擴(kuò)展,如果有可擴(kuò)展點(diǎn)v,放入ans[]的尾部,并且t=v,并繼續(xù)擴(kuò)展,如無(wú)法擴(kuò)展進(jìn)入步驟3.

3:將當(dāng)前得到的ans[]倒置,s和t互換,從t開始向外擴(kuò)展,如果有可擴(kuò)展點(diǎn)v,放入ans[]尾部,并且t=v,并繼續(xù)擴(kuò)展。如無(wú)法擴(kuò)展進(jìn)入步驟4.

4:如果當(dāng)前s和t相鄰,進(jìn)入步驟5.否則,遍歷ans[],尋找點(diǎn)ans[i],使得ans[i]與t相連并且ans[i +1]與s相連,將從ans[i + 1]到t部分的ans[]倒置,t=ans[i +1],進(jìn)如步驟5.

5:如果當(dāng)前ans[]中元素的個(gè)數(shù)等于n,算法結(jié)束,ans[]中保存了哈密頓回路(可看情況是否加入點(diǎn)s)。否則,如果s與t連通,但是ans[]中的元素的個(gè)數(shù)小于n,則遍歷ans[],尋找點(diǎn)ans[i],使得ans[i]與ans[]外的一點(diǎn)(j)相連,則令s=ans[i - 1],t = j,將ans[]中s到ans[i - 1]部分的ans[]倒置,將ans[]中的ans[i]到t的部分倒置,將點(diǎn)j加入到ans[]的尾部,轉(zhuǎn)步驟2.

時(shí)間復(fù)雜度:

如果說(shuō)每次到步驟5算一輪的話,那么由于每一輪當(dāng)中至少有一個(gè)節(jié)點(diǎn)被加入到路徑S -》 T中,所以總的輪數(shù)肯定不超過(guò)n輪,所以時(shí)間復(fù)雜度為O(n^2)??臻g上由于邊數(shù)非常多,所以采用鄰接矩陣來(lái)存儲(chǔ)比較適合。

代碼:

const int maxN = 100;

inline void reverse(int arv[maxN + 7], int s, int t){//將數(shù)組anv從下標(biāo)s到t的部分的順序反向

int temp;

while(s 《 t){

temp = arv[s];

arv[s] = arv[t];

arv[t] = temp;

s++;

t--;

}

}

void Hamilton(int ans[maxN + 7], bool map[maxN + 7][maxN + 7], int n){

int s = 1, t;//初始化取s為1號(hào)點(diǎn)

int ansi = 2;

int i, j;

int w;

int temp;

bool visit[maxN + 7] = {false};

for(i = 1; i 《= n; i++) if(map[s][i]) break;

t = i;//取任意鄰接與s的點(diǎn)為t

visit[s] = visit[t] = true;

ans[0] = s;

ans[1] = t;

while(true){

while(true){//從t向外擴(kuò)展

for(i = 1; i 《= n; i++){

if(map[t][i] && !visit[i]){

ans[ansi++] = i;

visit[i] = true;

t = i;

break;

}

}

if(i 》 n) break;

}

w = ansi - 1;//將當(dāng)前得到的序列倒置,s和t互換,從t繼續(xù)擴(kuò)展,相當(dāng)于在原來(lái)的序列上從s向外擴(kuò)展

i = 0;

reverse(ans, i, w);

temp = s;

s = t;

t = temp;

while(true){//從新的t繼續(xù)向外擴(kuò)展,相當(dāng)于在原來(lái)的序列上從s向外擴(kuò)展

for(i = 1; i 《= n; i++){

if(map[t][i] && !visit[i]){

ans[ansi++] = i;

visit[i] = true;

t = i;

break;

}

}

if(i 》 n) break;

}

if(!map[s][t]){//如果s和t不相鄰,進(jìn)行調(diào)整

for(i = 1; i 《 ansi - 2; i++)//取序列中的一點(diǎn)i,使得ans[i]與t相連,并且ans[i+1]與s相連

if(map[ans[i]][t] && map[s][ans[i + 1]])break;

w = ansi - 1;

i++;

t = ans[i];

reverse(ans, i, w);//將從ans[i +1]到t部分的ans[]倒置

}//此時(shí)s和t相連

if(ansi == n) return;//如果當(dāng)前序列包含n個(gè)元素,算法結(jié)束

for(j = 1; j 《= n; j++){//當(dāng)前序列中元素的個(gè)數(shù)小于n,尋找點(diǎn)ans[i],使得ans[i]與ans[]外的一個(gè)點(diǎn)相連

if(visit[j]) continue;

for(i = 1; i 《 ansi - 2; i++)if(map[ans[i]][j])break;

if(map[ans[i]][j]) break;

}

s = ans[i - 1];

t = j;//將新找到的點(diǎn)j賦給t

reverse(ans, 0, i - 1);//將ans[]中s到ans[i-1]的部分倒置

reverse(ans, i, ansi - 1);//將ans[]中ans[i]到t的部分倒置

ans[ansi++] = j;//將點(diǎn)j加入到ans[]尾部

visit[j] = true;

}

}

二:N(N》=2)階競(jìng)賽圖構(gòu)造哈密頓通路

N階競(jìng)賽圖:含有N個(gè)頂點(diǎn)的有向圖,且每對(duì)頂點(diǎn)之間都有一條邊。對(duì)于N階競(jìng)賽圖一定存在哈密頓通路。

數(shù)學(xué)歸納法證明競(jìng)賽圖在n 》= 2時(shí)必存在哈密頓路:

(1)n = 2時(shí)結(jié)論顯然成立;

(2)假設(shè)n = k時(shí),結(jié)論也成立,哈密頓路為V1, V2, V3, 。。。, Vk;

設(shè)當(dāng)n = k+1時(shí),第k + 1個(gè)節(jié)點(diǎn)為V(k+1),考慮到V(k+1)與Vi(1《=i《=k)的連通情況,可以分為以下兩種情況。

1:Vk與V(k+1)兩點(diǎn)之間的弧為《Vk, V(k+1)》,則可構(gòu)造哈密頓路徑V1, V2,…, Vk, V(k+1)。

2:Vk與V(k+1)兩點(diǎn)之間的弧為《V(k+1),Vk》,則從后往前尋找第一個(gè)出現(xiàn)的Vi(i=k-1,i》=1,--i),滿足Vi與V(k+1)之間的弧為《Vi,V(k+1)》,則構(gòu)造哈密頓路徑V1, V2, …, Vi, V(k+1), V(i+1), …, V(k)。若沒找到滿足條件的Vi,則說(shuō)明對(duì)于所有的Vi(1《=i《=k)到V(k+1)的弧為《V(k+1),V(i)》,則構(gòu)造哈密頓路徑V(k+1), V1, V2, …, Vk.證畢。

競(jìng)賽圖構(gòu)造哈密頓路時(shí)的算法同以上證明過(guò)程。

用圖來(lái)說(shuō)明:

假設(shè)此時(shí)已經(jīng)存在路徑V1 -》 V2 -》 V3 -》 V4,這四個(gè)點(diǎn)與V5的連通情況有16種,給定由0/1組成的四個(gè)數(shù),第i個(gè)數(shù)為0代表存在弧《V5,Vi》,反之為1,表示存在弧《Vi,V5》

哈密頓回路算法

sign[]={0, 0, 0, 0}。

很顯然屬于第二種情況,從后往前尋找不到1,即且不存在弧《Vi, V5》。

則構(gòu)造哈密頓路:V5 -》 V1 -》 V2 -》 V3 -》 V4.

哈密頓回路算法

sign[]={0, 0, 0, 1}。

屬于第一種情況,最后一個(gè)數(shù)字為1,即代表存在弧《Vi, V5》且i=4(最后一個(gè)點(diǎn))

則構(gòu)造哈密頓路: V1 -》 V2 -》 V3 -》 V4 -》 V5.

哈密頓回路算法

sign[]={0, 0, 1, 0}。

屬于第二種情況,從后往前找到1出現(xiàn)的第一個(gè)位置為3.

構(gòu)造哈密頓路: V1 -》 V2 -》 V3 -》 V5 -》 V4.

哈密頓回路算法

sign[]={0, 0, 1, 1}。

屬于第一種情況,最后一個(gè)數(shù)字為1,即代表存在弧《Vi, V5》且i=4(最后一個(gè)點(diǎn))

則構(gòu)造哈密頓路: V1 -》 V2 -》 V3 -》 V4 -》 V5.

哈密頓回路算法

sign[]={0, 1, 0, 0}。

屬于第二種情況,從后往前找到1出現(xiàn)的第一個(gè)位置為2.

構(gòu)造哈密頓路: V1 -》 V2 -》 V5 -》 V3-》 V4.

哈密頓回路算法

sign[]={0, 1, 0, 1}。

屬于第一種情況,最后一個(gè)數(shù)字為1,即代表存在弧《Vi, V5》且i=4(最后一個(gè)點(diǎn))

則構(gòu)造哈密頓路:V1 -》 V2 -》 V3 -》 V4 -》 V5.(就不舉末尾為1的栗子了~~)

哈密頓回路算法

sign[]={1, 0, 1, 0}。

屬于第二種情況,從后往前找到1出現(xiàn)的第一個(gè)位置為3.

構(gòu)造哈密頓路: V1 -》 V2 -》 V3 -》 V5-》 V4.

哈密頓回路算法

sign[]={1, 1, 1, 0}。

屬于第二種情況,從后往前找到1出現(xiàn)的第一個(gè)位置為3.

構(gòu)造哈密頓路: V1 -》 V2 -》 V3 -》 V5-》 V4.

哈密頓回路算法

sign[]={1, 1, 1, 1}。

同樣最后一位為1,代表存在《Vi, V5》且i=4(最后一位)

則構(gòu)造哈密頓路:V1 -》 V2 -》 V3 -》 V4 -》 V5.以上是當(dāng)N=4時(shí)(N+1=5),用圖來(lái)闡述算法的過(guò)程。

注意從后往前找不是找這個(gè)點(diǎn)編號(hào)之前的點(diǎn),即不是按照編號(hào)來(lái)的,而是按照當(dāng)前哈密頓序列從后往前找的。舉個(gè)栗子:

4

2 1

1 3

3 2

4 1

4 2

4 3

第一步ans={1}

第二步ans={2,1}

第三步sign={0, 1}(map[3][2] = 0,map[3][1] = 1,當(dāng)前序列為2,1) ,而不是{1, 0}(1,2),因?yàn)榇嬖诨 禫1, V3》和《V3, V2》。這里需要注意下。

代碼:

#include 《iostream》

#include 《cmath》

#include 《cstdio》

#include 《cstring》

#include 《cstdlib》

#include 《algorithm》

#include 《queue》

#include 《stack》

#include 《vector》

using namespace std;

typedef long long LL;

const int maxN = 200;

//The arv[] length is len, insert key befor arv[index]

inline void Insert(int arv[], int &len, int index, int key){

if(index 》 len) index = len;

len++;

for(int i = len - 1; i 》= 0; --i){

if(i != index && i)arv[i] = arv[i - 1];

else{arv[i] = key; return;}

}

}

void Hamilton(int ans[maxN + 7], int map[maxN + 7][maxN + 7], int n){

int ansi = 1;

ans[ansi++] = 1;

for(int i = 2; i 《= n; i++){//第一種情況,直接把當(dāng)前點(diǎn)添加到序列末尾

if(map[i][ans[ansi - 1]] == 1)

ans[ansi++] = i;

else{

int flag = 0;

for(int j = ansi - 2; j 》 0; --j){//在當(dāng)前序列中,從后往前找到第一個(gè)滿足條件的點(diǎn)j,使得存在《Vj,Vi》且《Vi, Vj+1》。

if(map[i][ans[j]] == 1){//找到后把該點(diǎn)插入到序列的第j + 1個(gè)點(diǎn)前。

flag = 1;

Insert(ans, ansi, j + 1, i);

break;

}

}

if(!flag)Insert(ans, ansi, 1, i);//否則說(shuō)明所有點(diǎn)都鄰接自點(diǎn)i,則把該點(diǎn)直接插入到序列首端。

}

}

}

int main()

{

//freopen(“input.txt”, “r”, stdin);

int t;

scanf(“%d”, &t);

while(t--){

int N;

scanf(“%d”, &N);

int M = N * (N - 1) / 2;

int map[maxN + 7][maxN + 7] = {0};

for(int i = 0; i 《 M; i++){

int u, v;

scanf(“%d%d”, &u, &v);

//map[i][j]為1說(shuō)明j 《 i,且存在弧《Vi, Vj》,因?yàn)椴迦霑r(shí)只考慮該點(diǎn)之前的所有點(diǎn)的位置,與之后的點(diǎn)沒有關(guān)系。所以只注重該點(diǎn)與其之前的點(diǎn)的連通情況。

if(u 《 v)map[v][u] = 1;

}

int ans[maxN + 7] = {0};

Hamilton(ans, map, N);

for(int i = 1; i 《= N; i++)

printf(i == 1 ? “%d”:“ %d”, ans[i]);

printf(“ ”);

}

return 0;

}

代碼2:void Hamilton(int ans[maxN + 7], int map[maxN + 7][maxN + 7], int n){

int nxt[maxN + 7];

memset(nxt, -1, sizeof(nxt));

int head = 1;

for(int i = 2; i 《= n; i++){

if(map[i][head]){

nxt[i] = head;

head = i;

}else{

int pre = head, pos = nxt[head];

while(pos != -1 && !map[i][pos]){

pre = pos;

pos = nxt[pre];

}

nxt[pre] = i;

nxt[i] = pos;

}

}

int cnt = 0;

for(int i = head; i != -1; i = nxt[i])

ans[++cnt] = i;

}

代碼三:

void Hamitton(bool reach[N + 7][N + 7], int n)

{

vector 《int》 ans;

ans.push_back(1);

for(int i=2;i 《= n;i++)

{

bool cont = false;

for(int j=0;j《(int)ans.size()-1;j++)

if(reach[ ans[j] ][i] && reach[i][ ans[j+1] ])

{

ans.insert(ans.begin()+j+1,i);

cont = true;

break;

}

if(cont)

continue;

if(reach[ ans.back() ][i])

ans.push_back(i);

else

ans.insert(ans.begin(),i);

}

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

printf(“%d%c”,ans[i],i==n-1?‘ ’:‘ ’);

}

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

    關(guān)注

    23

    文章

    4588

    瀏覽量

    92505
  • 哈密頓圖
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1273
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    ZigBee與哈密瓜不得不說(shuō)的故事

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

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

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

    求解LDPC碼回路算法

    回路長(zhǎng)度和回路數(shù)目的影響,回路的存在使譯碼信息重復(fù)迭代,性能下降。本論文通過(guò)計(jì)算機(jī)仿真,采用Matlab元胞數(shù)組,將二元校驗(yàn)矩陣轉(zhuǎn)換為樹矩陣,實(shí)現(xiàn)了求解LDPC碼回路
    發(fā)表于 12-26 11:09 ?0次下載

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

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

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

    本文主要介紹了哈密頓回路的應(yīng)用,哈密頓圖定義概念以及哈密頓圖的判定定理。哈密頓通路(回路)與哈密頓
    的頭像 發(fā)表于 02-01 15:58 ?4230次閱讀
    <b class='flag-5'>哈密頓回路</b>的應(yīng)用

    永磁同步直線電機(jī)位置控制

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

    模擬量子計(jì)算的未來(lái)前景將一片光明

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

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

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

    模擬量子計(jì)算的實(shí)力前景不可限量

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

    解決人工智能“智障”新思路——哈密頓函數(shù)

    人工神經(jīng)網(wǎng)絡(luò)是人工智能深度學(xué)習(xí)算法的基礎(chǔ)結(jié)構(gòu),大致模仿人類大腦的物理結(jié)構(gòu)。當(dāng)你為神經(jīng)網(wǎng)絡(luò)提供訓(xùn)練樣例時(shí),它會(huì)通過(guò)人工神經(jīng)元層運(yùn)行它,然后調(diào)整它們的內(nèi)部參數(shù),以便能夠?qū)哂邢嗨茖傩缘奈磥?lái)數(shù)據(jù)進(jìn)行分類
    的頭像 發(fā)表于 06-27 16:43 ?1585次閱讀

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

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

    基于高光譜的不同成熟期哈密瓜堅(jiān)實(shí)度研究

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