Masalah laluan ialah masalah asas dalam teori kerumitan pengiraan yang melibatkan mencari laluan antara dua bucu dalam graf. Diberi graf G = (V, E) dan dua bucu s dan t, matlamatnya adalah untuk menentukan sama ada wujud laluan dari s ke t dalam G.
Untuk menyelesaikan masalah laluan, satu pendekatan ialah menggunakan algoritma penandaan. Algoritma penandaan ialah teknik mudah dan cekap yang boleh digunakan untuk menentukan sama ada laluan wujud antara dua bucu dalam graf.
Algoritma berfungsi seperti berikut:
1. Mulakan dengan menandakan titik permulaan s sebagai dilawati.
2. Bagi setiap bucu v bersebelahan dengan s, tandakan v sebagai dilawati dan tambahkannya pada baris gilir.
3. Walaupun baris gilir tidak kosong, ulangi langkah berikut:
a. Keluarkan bucu u daripada baris gilir.
b. Jika u ialah bucu sasaran t, maka laluan dari s ke t telah ditemui.
c. Jika tidak, bagi setiap bucu v bersebelahan dengan u yang belum dilawati, tandakan v sebagai dilawati dan tambahkannya pada baris gilir.
Algoritma penandaan menggunakan strategi lintasan carian pertama luas (BFS) untuk meneroka graf dan menandakan bucu sebagai dilawati. Dengan berbuat demikian, ia memastikan setiap bucu yang boleh dicapai dari bucu permulaan dilawati, membolehkan algoritma menentukan sama ada laluan wujud antara bucu permulaan dan sasaran.
Kerumitan masa bagi algoritma penandaan ialah O(|V| + |E|), di mana |V| ialah bilangan bucu dalam graf dan |E| ialah bilangan tepi. Ini kerana algoritma melawati setiap bucu dan setiap tepi sekali. Dari segi teori kerumitan pengiraan, algoritma penandaan tergolong dalam kelas P, yang mewakili masalah yang boleh diselesaikan dalam masa polinomial.
Berikut ialah contoh untuk menggambarkan aplikasi algoritma penandaan:
Pertimbangkan graf berikut:
A --- B --- C | | D --- E --- F
Katakan kita ingin menentukan sama ada terdapat laluan dari bucu A ke bucu F. Kita boleh menggunakan algoritma penandaan seperti berikut:
1. Mulakan dengan menandakan bucu A sebagai dilawati.
2. Tambahkan bucu A pada baris gilir.
3. Keluarkan bucu A daripada baris gilir.
4. Tandakan bucu B sebagai dilawati dan tambahkannya pada baris gilir.
5. Keluarkan bucu B daripada baris gilir.
6. Tandakan bucu C sebagai dilawati dan tambahkannya pada baris gilir.
7. Keluarkan bucu C dari baris gilir.
8. Tandakan bucu D sebagai dilawati dan tambahkannya pada baris gilir.
9. Keluarkan bucu D daripada baris gilir.
10. Tandakan bucu E sebagai dilawati dan tambahkannya pada baris gilir.
11. Keluarkan bucu E daripada baris gilir.
12. Tandakan bucu F sebagai dilawati.
13. Memandangkan bucu F ialah bucu sasaran, laluan dari A ke F telah ditemui.
Dalam contoh ini, algoritma penandaan berjaya menentukan bahawa terdapat laluan dari bucu A ke bucu F.
Masalah laluan dalam teori kerumitan pengiraan melibatkan mencari laluan antara dua bucu dalam graf. Algoritma penandaan ialah teknik yang mudah dan cekap yang boleh digunakan untuk menyelesaikan masalah ini dengan melakukan lintasan carian pertama luas dan menanda bucu sebagai yang dilawati. Algoritma mempunyai kerumitan masa O(|V| + |E|) dan tergolong dalam kelas P.
Soalan dan jawapan terbaru lain mengenai kerumitan:
- Adakah kelas PSPACE tidak sama dengan kelas EXPSPACE?
- Adakah kelas kerumitan P subset kelas PSPACE?
- Bolehkah kita membuktikan bahawa kelas Np dan P adalah sama dengan mencari penyelesaian polinomial yang cekap untuk sebarang masalah lengkap NP pada TM yang menentukan?
- Bolehkah kelas NP sama dengan kelas EXPTIME?
- Adakah terdapat masalah dalam PSPACE yang tiada algoritma NP yang diketahui?
- Bolehkah masalah SAT menjadi masalah lengkap NP?
- Bolehkah masalah berada dalam kelas kerumitan NP jika terdapat mesin turing bukan deterministik yang akan menyelesaikannya dalam masa polinomial
- NP ialah kelas bahasa yang mempunyai pengesah masa polinomial
- Adakah P dan NP sebenarnya adalah kelas kerumitan yang sama?
- Adakah setiap bahasa bebas konteks dalam kelas kerumitan P?
Lihat lebih banyak soalan dan jawapan dalam Kerumitan