Selasa, 05 September 2017

Pemrograman # 6: Masalah Jalur Terpendek

Solusi sains dan teknologi -- Sekarang kita memiliki beberapa dasar pemrograman di bawah ikat pinggang kita, kita bisa mulai menggunakannya untuk memecahkan masalah.Mari kita mulai dengan salah satu masalah paling terkenal dalam ilmu komputer, seperti namanya, masalah jalur terpendek adalah menemukan jalur terpendek di a.Bayangkan bahwa kita memiliki grafik yang mewakili kota asal kita.Vertikal atau nodus akan mewakili lokasi, dan tepi akan mewakili jalan yang menghubungkan lokasi tersebut.

Solusi sains dan teknologi -- Untuk kesederhanaan, katakanlah bahwa setiap jalan berjalan dua arah (grafik tidak berarah).Kita juga bisa menambahkan bobot ke setiap sisi yang memberi tahu kita jarak antara dua lokasi di sepanjang jalan yang diberikan.Dalam contoh ini, jalur terpendek adalah jalur antara dua lokasi, di mana jumlah jarak antara jalan setapak mungkin.Sebelum kita menyelesaikan masalah ini, mari bayangkan solusinya untuk grafik yang tidak tert imbang.

Solusi sains dan teknologi -- Dalam kasus ini, jalur terpendek antara dua simpul hanya akan menjadi jalur dengan jumlah tepi paling sedikit.Solusi untuk masalah inihanyalah pencarian pertama yang luas (BFS).Ingatlah bahwa dengan BFS, kita mulai pada satu titik, kunjungi semua simpul terdekat (berlawanan dengan mengikuti satu sisi terlebih dulu), dan kemudian memperluas pencarian ke simpul yang lebih jauh sampai kita menemukan yang kita cari.Ini akhirnya memberi kita jalan setapak dengan sedikit tepi.

Solusi sains dan teknologi -- Kembali ke masalah grafik tertimbang.Salah satu solusi untuk masalah jalur terpendek adalah.Dari wikipedia: Biarkan simpul tempat kita mulai disebut.Biarkan jarak dari ke.

Solusi sains dan teknologi -- Algoritma Dijkstra akan Solusi sains dan teknologi beberapa nilai jarak awal dan akan mencoba memperbaikinya secara bertahap.Tentu saja, ini menemukan jarak antara s umber dan semua simpul lainnya.Dalam contoh kita, kita hanya ingin menemukan jarak dari lokasi "A" ke lokasi "E".Untuk melakukan ini, kita dapat menggunakan antrian prioritas min untuk menghemat jarak minimum agar mudah dihapus.

Solusi sains dan teknologi -- Misalnya, jika kita menyimpan semua simpul kita dalam antrian prioritas dan menggunakan ekstrak min, elemen pertama yang dihapus akan menjadi milik kitaTarting lokasi dengan jarak 0.Dari sini kita bisa mengikuti setiap sisi dan mengupdate nilai jarak dari simpul yang sesuai dalam antrian kita.Dengan menggunakan ekstrak min lagi, kita akan bergerak maju dalam grafik kita di sepanjang tepi terpendek.Proses ini dapat diulang sampai kita menemukan simpul yang kita cari.

Solusi sains dan teknologi -- Ini adalah contoh algoritma serakah karena kita memilih pilihan apa pun yang paling bagus saat ini.Waktu dasar untuk algoritma Dijkstra adalah O (V), di mana V mewakili jumlah simpul dalam gra fik.Jika antrian prioritas kami dioptimalkan, kita dapat membawa run-time ke O (E Vlog (V)).Mari menerapkan versi algoritma kami yang menggunakan antrian prioritas untuk mempercepat proses.

Solusi sains dan teknologi -- Katakanlah kita diberi graf tertimbang tak terdiret G (diwakili sebagai adjacency dict), sebuah titik awal, dan titik akhir.Tujuan kami adalah mengembalikan jalur terpendek antara titik awal dan sudut akhir, bersama dengan jarak.Sebagai contoh: Solusi yang dibangun dengan Python2: "Saya memiliki kekuatanTarting lokasi dengan jarak 0.Dari sini kita bisa mengikuti setiap sisi dan mengupdate nilai jarak dari simpul yang sesuai dalam antrian kita.

Solusi sains dan teknologi -- Dengan menggunakan ekstrak min lagi, kita akan bergerak maju dalam grafik kita di sepanjang tepi terpendek.Proses ini dapat diulang sampai kita menemukan simpul yang kita cari.Ini adalah contoh algoritma serakah karena kita memilih pilihan apa pun yang p aling bagus saat ini.Waktu dasar untuk algoritma Dijkstra adalah O (V), di mana V mewakili jumlah simpul dalam grafik.

Solusi sains dan teknologi -- Jika antrian prioritas kami dioptimalkan, kita dapat membawa run-time ke O (E Vlog (V)).Mari menerapkan versi algoritma kami yang menggunakan antrian prioritas untuk mempercepat proses.Katakanlah kita diberi graf tertimbang tak terdiret G (diwakili sebagai adjacency dict), sebuah titik awal, dan titik akhir.Tujuan kami adalah mengembalikan jalur terpendek antara titik awal dan sudut akhir, bersama dengan jarak.

Solusi sains dan teknologi -- Sebagai contoh: Solusi yang dibangun dengan Python2: "Saya memiliki kekuatan .

Tidak ada komentar:

Posting Komentar