Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Bredden-först exempel ABCD EFGH IJKL MNOP = Obesökt nod = Öppen nod = Stängd nod Aktuell nod är röd
Bredden-först exempel ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Välj en (obesökt) nod k och markera den öppen. PQ = {} 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
Bredden-först exempel ABCD EFGH IJKL MNOP Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön PQ = {(B, 100) (F,99), (E,98)} ABCD EFGH IJKL MNOP 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,99), (E,98)}
Bredden-först exempel ABCD EFGH IJKL MNOP 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,99), (E,98), (F, 97)} ABCD EFGH IJKL MNOP Varje obesökt granne till k markeras som öppen och en referens till noden tillsammans med ett tilldelat prioritetsvärde i prioritetskön PQ = {(F,99), (E,98), (F, 97), (C, 96)}
Bredden-först exempel ABCD EFGH IJKL MNOP Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ = {(E,98), (F, 97), (C, 96)} ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(E,98), (F, 97), (C, 96), (E, 95)} Varje obesökt granne görs öppen och läggs till i kön PQ = {(E,98), (F, 97), (C, 96), (E, 95), (I, 94)}
Bredden-först exempel ABCD EFGH IJKL MNOP 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, 97), (C, 96), (E, 95), (I, 94)} ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ = {(F, 97), (C, 96), (E, 95), (I, 94), (I, 93)} Varje obesökt granne görs öppen och läggs till i kön
Bredden-först exempel ABCD EFGH IJKL MNOP Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (F redan stängd) PQ = {(E, 95), (I, 94), (I, 93)} ABCD EFGH IJKL MNOP 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 = {(E, 95), (I, 94), (I, 93), (D, 92), (G, 91)}
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (E var redan stängd) PQ = {(I, 93), (D, 92), (G, 91)} ABCD EFGH IJKL MNOP 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 = {(I, 93), (D, 92), (G, 91), (J, 90), (M, 89), (N, 88)} ABCD EFGH IJKL MNOP
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (I redan stängd) PQ = {(G, 91), (J, 90), (M, 89), (N, 88)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ={(G,91), (J, 90), (M, 89), (N, 88), (G, 87)} Varje obesökt granne görs öppen och läggs till i kön PQ={(G,91), (J, 90), (M, 89), (N, 88), (G, 87), (H, 86)}
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ={(J, 90), (M, 89), (N, 88), (G, 87), (H, 86)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ={(J,90),(M,89),(N,88),(G,87),(H,86), (J,85)} Varje obesökt granne görs öppen och läggs till i kön PQ={(J,90),(M,89),(N,88),(G,87),(H,86), (J,85),(K,84),(L,83)}
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ={(M,89),(N,88),(G,87),(H,86), (J,85),(K,84),(L,83)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ={(M,89),(N,88),(G,87),(H,86), (J,85),(K,84),(L,83),(K,82)} Varje obesökt granne görs öppen och läggs till i kön
Bredden-först exempel 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,88),(G,87),(H,86),(J,85), (K,84),(L,83),(K,82)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ={(N,88),(G,87),(H,86),(J,85), (K,84),(L,83),(K,82),(N,81)} Varje obesökt granne görs öppen och läggs till i kön
Bredden-först exempel 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,87),(H,86),(J,85),(K,84), (L,83), (K,82),(N,81)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd Varje öppen granne till k placeras i prioritetskön PQ={(G,87),(H,86),(J,85),(K,84), (L,83), (K,82),(N,81),(K,80)} Varje obesökt granne görs öppen och läggs till i kön
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (G redan stängd) PQ={(J,85),(K,84), (L,83), (K,82), (N,81),(K,80)} Markera k stängd. Varje öppen granne till k placeras i prioritetskön PQ={(J,85),(K,84), (L,83), (K,82), (N,81),(K,80),(L,79)} Varje obesökt granne görs öppen och läggs till i kön ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (J redan stängd) PQ={(L,83), (K,82), (N,81), (K,80)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP 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,83), (K,82), (N,81), (K,80), (O,79)}
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön PQ={(K,82), (N,81), (K,80), (O,79)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP 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,82), (N,81), (K,80), (O,79), (P,78)}
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (K,N,K redan stängd) PQ={(P,78)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP Markera k stängd. Varje öppen granne till k placeras i prioritetskön PQ ={(P,78), (P,77)} Varje obesökt granne görs öppen och läggs till i kön
Bredden-först exempel Välj den nod k som det första elementet i prioritetskön refererar till och ta bort köelementet ur prioritetskön (K,N,K redan stängd) PQ={(P,77)} ABCD EFGH IJKL MNOP ABCD EFGH IJKL MNOP 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 Sista elementet i kön redan stängt, alla noder stängda. Klart!