無權(quán)最短路徑

def makeAdjacencyList():
    al = {}
    al[1] = [2, 4]
    al[2] = [4, 5]
    al[3] = [1, 6]
    al[4] = [5, 6, 7, 3]
    al[5] = [7]
    al[6] = []
    al[7] = [6]
    return al


class Vertex(object):
    def __init__(self):
        self.known = False
        self.dist = None
        self.path = None


def initializeTable(adjacencyList, vertexAsStart):
    T = {}
    for vrtx in adjacencyList.iterkeys():
        v = Vertex()
        T[vrtx] = v
    T[vertexAsStart].dist = 0
    return T


def findShortestPathInUnweightedGraph(adjacencyList):
    T = initializeTable(adjacencyList, 3)
    vertexs = adjacencyList.keys()
    currDist = 0
    for i in vertexs:
        for v in vertexs:
            if T[v].known == False and T[v].dist == currDist:
                T[v].known = True
                for w in adjacencyList[v]:
                    if T[w].dist == None:
                        T[w].dist = currDist + 1
                        T[w].path = v
        currDist += 1
    return T

adjacencyList = makeAdjacencyList()
T = findShortestPathInUnweightedGraph(adjacencyList)
                    
dct = {}    

for vrtx, attrs in T.iteritems():
    dct.setdefault(attrs.dist, [])
    dct[attrs.dist].append(vrtx)
        

print dct

for vrtx, attrs in T.iteritems():
    print vrtx, attrs.known, attrs.dist, attrs.path
{0: [3], 1: [1, 6], 2: [2, 4], 3: [5, 7]}
1 True 1 3
2 True 2 1
3 True 0 None
4 True 2 1
5 True 3 2
6 True 1 3
7 True 3 4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Dijkstra“單源最短路”,是指指定一個點(diǎn)(源點(diǎn))到其余各個頂點(diǎn)的最短路徑。例如:求下圖中的1號頂點(diǎn)到其他頂點(diǎn)...
    我系哆啦閱讀 1,280評論 1 7
  • 數(shù)據(jù)結(jié)構(gòu)與算法--拓補(bǔ)排序及無環(huán)加權(quán)有向圖的最短路徑 現(xiàn)實生活中一些項目工程、生產(chǎn)開發(fā),都有一個所謂的流程。一個流...
    sunhaiyu閱讀 2,448評論 0 8
  • 1. Dijkstra算法(迪杰斯特拉算法) 所求的是,某一個頂點(diǎn)到圖中各點(diǎn)的最短路徑。算法基本思路 找到離頂點(diǎn)最...
    個革馬閱讀 339評論 0 0
  • 整理自《數(shù)據(jù)結(jié)構(gòu)高分筆記》 1、算法思想 迪杰斯特拉算法可以得到從圖中某一頂點(diǎn)到圖中其余每個頂點(diǎn)的最短路徑。如果只...
    文哥的學(xué)習(xí)日記閱讀 3,585評論 0 1
  • 當(dāng)高登接手這單失蹤案的時候,他早已做好了破不了案的準(zhǔn)備。雖然警局有專用的做大數(shù)據(jù)機(jī)器,但是找失蹤人員依然像是在玩高...
    Astrian閱讀 267評論 0 1

友情鏈接更多精彩內(nèi)容