Graph Dijkstra’s algorithm 實作 in JAVA(四)

這是coding x 的課堂筆記(四)

tony Kuo
Code Da
2 min readAug 9, 2019

--

Graph Terminology:

graph G = (V, E) ,V是vertex的集合,E是edge的集合

其中又分成Directed Graph、Undirected Graph

在Graph中有Cn取2=n (n — 1)/2種edges可能。

Directed Graph因有方向性,兩vertex之間可互指,所以最多有n (n — 1)條edges。

Undirected Graph 兩vertex之間只有一條,所以最多有n (n — 1)/2條edges。

Edge 表示:

兩Graph之關係表示

Graph Terminology in Data:

Adjacency matrix:

Advantage: O(1) time to find an edge

Drawback: O(|V|^2) space to storage

suitable for dense graphs

Adjacency list:

Advantage: O(|V|+|E|) space to storage

Drawback: need to traverse all list to find an edge

suitable for sparse graphs

Graph with Weighted Edges (Network):

在 Adjacency matrix 預設cost=1,若要加入權重直接更改1為cost值即可。

在 Adjacency list 中,則需要在node 中新增一個Weight值。

Shortest Paths — Single Source All Destinations : Nonnegative Edge Costs :

Dijkstra’s algorithm:

先來看看Dijkstra’s algorithm pseudocode:

JAVA:

給我LikeCoin讓我持續分享

--

--

Code Da
Code Da

Published in Code Da

學習是一種刺眼的光輝,一種膩耳的音響,一種不完美

tony Kuo
tony Kuo

Written by tony Kuo

追知識追夢追科技,喜歡新穎的事物及看法,更喜歡思考。RD in Trendmicro