เมนูนำทาง
ขั้นตอนวิธีของจอห์นสัน รหัสเทียมJohnson ( graph G ) { //สร้างกราฟ K ใหม่เพิ่มปมพิเศษ q และเพิ่มเส้นเชื่อมจากปม q ไปปมอื่นทุกปมให้น้ำหนักเป็น 0 create graph K : K.V = G.V add {q} //V คือ จุดปม : K.E = G.E add {(q,i) | i in G.V} //E คือ เส้นเชื่อม : K.W = G.W , K.W(q,i) = 0 | i in G.V //W คือ ระยะระหว่างปมสองปม BellmanFord(K,q) //ถ้ามีวงจรติดลบจะหยุด for each edge (i,j)in G.E G.W(i,j) += h[i]-h[j] for each vertex i in G.V { d=dijkstra(G,i) //d คือ array ของทุกจุดในกราฟแต่ละจุดเก็บระยะสั้นสุดจากจุด i for each vertex j in G.V L(i,j)=d[j]-(h[i]-h[j]) //L คือ ระยะทางสั้นสุด } return L }
เมนูนำทาง
ขั้นตอนวิธีของจอห์นสัน รหัสเทียมใกล้เคียง
ขั้นตอนวิธีแบบยุคลิด ขั้นตอนวิธีการค้นหาเพื่อนบ้านใกล้สุด k ตัว ขั้นตอนวิธีของฟลอยด์-วอร์แชล ขั้นตอนวิธีของควิน-แม็กคลัสกีย์ ขั้นตอนวิธี ขั้นตอนวิธีเชิงพันธุกรรม ขั้นตอนวิธีฮังกาเรียน ขั้นตอนวิธีของชอร์ ขั้นตอนวิธีโบรน-เคอร์โบสท์ ขั้นตอนวิธีของเบลแมน-ฟอร์ดแหล่งที่มา
WikiPedia: ขั้นตอนวิธีของจอห์นสัน http://www.youtube.com/watch?v=2CuQxQX01XU //doi.org/10.1002%2Fnet.3230040204 http://www.cp.eng.chula.ac.th/~somchai/ULearn/Algo... http://www.cp.eng.chula.ac.th/~somchai/spj/slides/...