A 演算法題解研究

2021-08-20 11:18:14 字數 708 閱讀 9622

從初始節點s到目標節點g :

s節點有相鄰的節點:

f(n)=g(n)+h(n)

g(n)是移動代價 h(n)是估計成本

第一步:

計算s節點相鄰所有節點的f(n) 取最小的f(n)的節點作為下乙個節點

假設s 下面是a,b節點

fa(n)=ga(n)+ha(n) 其中g是實際路徑(一般來講是指路徑上的值) h是估計路徑(一般來講是指的標記在節點上的值)

fb(n)=gb(n)+hb(n)

這個時候假設fa(n)a節點

第二步:

假設a節點下面有兩個節點 乙個是c節點,乙個是d節點

fc(n)=gc(n)(這裡指的是到這個節點,路徑上的和相加的值)+hc(n)(指的是c節點上的值)

fd(n)=gd(n)(這裡指的是到這個節點,路徑上的和相加的值)+hc(n)(指的是d節點上的值)

假設fc(n)c節點

第三步:

假設c和d節點連線的g節點 是目標節點

計算s->a->c->g的實際路徑 如果實際路徑大於fd(n)

就要繼續計算一下s->a->d->g的路徑,來決定最小的路徑是什麼

特點:引入估計值(節點上的估計函式來進行搜尋,從而可以加快搜尋的速度)

舉個例子:

Camshift演算法研究

根據獲得的色彩直方圖將原始影象轉化成色彩概率分布影象,這個過程就被稱作 back projection 在opencv 中的直方圖函式中,包含back projection 的函式,函式原型是 void cvcalcbackproject iplimage img,cvarr backproject...

Diff演算法研究

在unix linux的世界裡面,如果我們需要比較兩個檔案,就會用乙個比較的命令 diff。而這個diff的原理是什麼呢?在diff裡面,我們比較的兩個檔案叫做old和new,而一般是按行來比較。這裡我們可以抽象成乙個字串的比較,比如 old abcdefger new abdefereger 那麼...

KMP 演算法研究

定義 1 next 0 1 意義 任何串的第乙個字元的模式值規定為 1。2 next j 1 意義 模式串 t中下標為 j的字元,如果與首字元 相同,且 j的前面的 1 k個字元與開頭的 1 k個字元不等 或者相等但 t k t j 1 k 如 t abcabcad 則next 6 1 因t 3 t...