Saat menguji algoritma, pendekatan yang umum adalah pengujian acak: menghasilkan sejumlah besar input sesuai dengan beberapa distribusi (biasanya seragam), jalankan algoritma pada mereka dan verifikasi kebenarannya. Kerangka pengujian modern dapat menghasilkan input secara otomatis mengingat tanda tangan algoritma, dengan beberapa batasan.
Jika input berupa angka, daftar atau string, buat input tersebut secara langsung. Pohon lebih sulit, tetapi masih mudah (menggunakan tata bahasa bebas konteks stokastik atau pendekatan serupa).
Bagaimana Anda bisa menghasilkan grafik acak (efisien)? Biasanya, memilih grafik secara acak secara acak bukanlah yang Anda inginkan: grafik harus terhubung, atau planar, atau bebas siklus, atau memenuhi properti lainnya. Sampling penolakan tampaknya suboptimal, karena serangkaian besar grafik yang tidak diinginkan.
Apa distribusi yang berguna untuk dilihat? Berguna di sini artinya
- grafik cenderung menguji algoritma yang ada dengan baik dan
- mereka dapat dihasilkan secara efektif dan efisien.
Saya tahu bahwa ada banyak model untuk grafik acak, jadi saya menghargai beberapa wawasan yang terbaik untuk pembuatan grafik dalam hal ini.
Jika "beberapa algoritma" terlalu umum, silakan gunakan algoritma pencarian jalur terpendek sebagai kelas konkret dari algoritma yang sedang diuji. Grafik untuk pengujian harus terhubung dan agak padat (dengan probabilitas tinggi, atau setidaknya dalam harapan). Untuk pengujian, solusi optimal adalah membuat grafik acak di sekitar jalur terpendek sehingga kami tahu hasil yang diinginkan (tanpa harus menggunakan algoritma lain).