2016 7 20晚 聽課收穫

2021-07-15 08:00:20 字數 1254 閱讀 8016

今天,跟著昨天晚上的圖的相關知識,他又講了圖的遍歷,也就是求最短路徑。

求最短路徑先講了floyd演算法。最大的收穫就是明白了為什麼中轉點k要放在外裡面。

可以用反證法。意思就是:如果當前中轉點放在外面或i,j迴圈的中間時,就會使得如果當前第k個點都大於i,j的話,第i個點到第k個點或第j個點到k點就會還沒算好,如果還沒算好再去更新i到j的最短路徑就沒有意義了,也就會使得答案錯誤。而放在裡面則不會,仔細想想就就能明白。

其次我們也可以想到由一條i到j的最短距離,在floyd就是由i~k,再從k~j的兩個狀態的值得來的。所以我們每次求解f[i,k]的時候,因為k在外面,所以每次都可以吧f[i,k]變成乙個f[i,k']加f[k',k]的子問題,依次求出子問題的值,就可得知在算i~j的距離時,f[i,k]和f[k,j]的值必定是已算過的(但有可能i走不到k或者k走不到j,但這個值一定是被「更新」過的。)

其次是spfa演算法。

其實spfa演算法是bellman ford演算法的優化,也就是其中心思想就是bellman ford。因為易證在求到第i個點的時候不需要狀態t(t表示當前走了多少個點)。易得出如果設a[i,j]表示第i個點所連向的第j個點,b[i,j]表示距離,則f[a[i,j]]就等於min

其實對於spfa演算法最大的收穫就是儲存節點的方式:

以前做題時經常用的是最容易想到的鄰接表儲存。但,如果有10000個點,只有100000(或再多一些)條邊,則如果資料極端一點,1個點就連向了剩下所有的點,則需把鄰接錶開到10000*10000,當題目空間有限制的時候明顯是行不通的。

因為邊數有限,所以我們可以採用另一種儲存邊的方式:

假設當前有一條x到y的邊,距離為z。

那麼,我們當找到這麼一條邊的時候,就需把當前邊的總數+1.並記錄。

可以用tov[tot]表示以第x個點所去向的點,len[tot]表示去向這個點的距離。

last[x]表示以x為節點,所連向的最後一條邊的編號。next[tot]表示當前第tot條邊所記錄的上一條邊。

可得知記錄的總過程為:

procedure insert(x,y,z:longint)

記錄好之後,我們可以每次把乙個t賦值為last[x](x為當前往其他點拓展的點)然後判斷tov[t]的最優(spfa裡面的更新最優值)最後把t賦值為next[t],知道next[t]為0時就不繼續拓展下去。

最後,我們分析一下時間複雜度和時空複雜度。

時間複雜度對於floyd來說,毋庸置疑o(n³)

而對於spfa,段凡丁給出的是o(km)(m為邊數,k是常數,在隨機情況一般小於等於2)

2016 7 20學習總結,關於螢幕適配

1.讓indicator設定viewpager 2.高亮,先讓其他所有的不亮,再讓指定的那乙個亮 3.1英吋 2.54cm,1寸 3.333厘公尺,1尺 10寸 33.33厘公尺 4.螢幕畫素密度dpi 每英吋上的畫素點數 根號下橫向畫素點的平方 縱向畫素點的平方 螢幕尺寸 英吋 其中開根號得到的是...

聽什麼,如何聽

聽力是長期的聽力練習和語言實踐中培養和提高的。美國語言學家l.bloomfield說過 學習語言就是實踐 再實踐,其他方法是沒有用處的。但是聽什麼,怎樣聽才能有效提高聽力理解能力呢?一 選擇聽力材料 初級 英語聽力入門 step by step,第 一 二冊,華東師大出版社 英語初級聽力 speci...

找工作 9月13日晚去北郵聽「映客」宣講會收穫

因為研三的師弟收到了 映客inke 公司13號晚在北郵的筆試通知,我跟著去蹭了一次宣講會。以下是宣講會的現場,螢幕上顯示了映客此次的招聘需求。我做了一套 演算法 的題目,一拿到卷子就頭大,感覺網際網路公司招聘的要求跟我的預期不一樣呀!不同之處在於 題目中出現了很多計算機專業知識,這我不懂。我以前引以...