MulaiMulai sekarang secara gratis

Jalur Terpendek II

Sekarang Anda sudah memiliki kode untuk memeriksa apakah simpul tujuan ada di dalam neighbors, berikutnya Anda akan memperluas fungsi yang sama untuk menulis kode ketika simpul tujuan tidak ada di dalam neighbors.

Semua kode yang perlu Anda tulis ada pada kondisi else; yaitu jika node2 tidak ada di neighbors.

Latihan ini adalah bagian dari kursus

Pengantar Analisis Jaringan di Python

Lihat Kursus

Petunjuk latihan

  • Dengan menggunakan metode .add(), tambahkan simpul saat ini node ke himpunan visited_nodes untuk melacak simpul mana saja yang sudah dikunjungi.
  • Tambahkan neighbors dari simpul saat ini node yang belum dikunjungi ke queue. Untuk melakukannya, Anda perlu menggunakan metode .extend() dari queue bersama pemahaman daftar. Metode .extend() menambahkan semua item dalam sebuah daftar yang diberikan.
    • Ekspresi keluaran dan variabel iterator dari pemahaman daftar keduanya adalah n. Iterable-nya adalah iterator dari neighbors, dan kondisionalnya adalah jika n tidak ada di simpul yang telah dikunjungi.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

def path_exists(G, node1, node2):
    """
    This function checks whether a path exists between two nodes (node1, node2) in graph G.
    """
    visited_nodes = set()
    queue = [node1]

    for node in queue:
        neighbors = G.neighbors(node)
        if node2 in neighbors:
            print('Path exists between nodes {0} and {1}'.format(node1, node2))
            return True

        else:
            # Add current node to visited nodes
            ____

            # Add neighbors of current node that have not yet been visited
            queue.extend([____ for ____ in ____ if ____ not in ____])
Edit dan Jalankan Kode