© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Djupet-först exempel = Obesökt nod A B C D = Öppen nod E F G H = Stängd nod I J K L Aktuell nod är röd M N O P © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003
Djupet-först exempel Välj en (obesökt) nod k och markera den öppen. PQ = {} E F G H I J K L M N O P A B C D Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön PQ = {(E, 3) (F,2), (B,1)} E F G H I J K L M N O P A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(F,2), (B,1)} E F G H I J K L M N O P
Djupet-först exempel Markera k stängd B C D Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön PQ = {(F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön PQ = {(I, 4) (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(F, 3), (F,2), (B,1)} E F G H I J K L M N O P Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön PQ = {(M, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} A B C D Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(N, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön PQ = {(K, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön PQ = {(O, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} A B C D Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön PQ = {(P, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön PQ = {(L, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön PQ = {(H, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} A B C D Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön PQ = {(D, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön PQ = {(C, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(B,12), (G, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(F,12), (G, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(J, 11), (G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} Varje obesökt granne görs öppen och läggs till i kön Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P
Djupet-först exempel A B C D Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(G, 10), (G, 9), (G, 8), (J, 7), (N, 6), (J, 5), (F, 4), (F, 3), (F,2), (B,1)} E F G H I J K L M N O P A B C D Markera k stängd Varje öppen granne till k placeras i prioritetskön Varje obesökt granne görs öppen och läggs till i kön Nu är alla noder stängda och algoritmen slut! Se till att alla noder är markerade obesökta och prioritetskön är tom. Välj en (obesökt) nod k och markera den öppen. Upprepa tills alla noder är stängda: Om k är öppen: Markera k stängd För varje öppen granne till k placeras en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön Annars (dvs k stängd) Om prioritetskön är tom Välj en obesökt nod k och markera den öppen Annars välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön E F G H I J K L M N O P