Khi kiểm tra các thuật toán, một cách tiếp cận phổ biến là kiểm tra ngẫu nhiên: tạo ra một số lượng đáng kể các đầu vào theo một số phân phối (thường là thống nhất), chạy thuật toán trên chúng và xác minh tính chính xác. Các khung kiểm tra hiện đại có thể tạo đầu vào tự động với chữ ký thuật toán, với một số hạn chế.
Nếu đầu vào là số, danh sách hoặc chuỗi, tạo đầu vào như vậy theo hướng thẳng. Cây khó hơn, nhưng vẫn dễ dàng (sử dụng ngữ pháp không ngữ cảnh ngẫu nhiên hoặc các cách tiếp cận tương tự).
Làm thế nào bạn có thể tạo đồ thị ngẫu nhiên (hiệu quả)? Thông thường, chọn đồ thị thống nhất một cách ngẫu nhiên không phải là điều bạn muốn: chúng nên được kết nối, hoặc phẳng, hoặc không có chu kỳ, hoặc thực hiện bất kỳ thuộc tính nào khác. Lấy mẫu từ chối có vẻ không tối ưu, do tập hợp đồ thị không mong muốn rất lớn.
Phân phối hữu ích để xem xét là gì? Hữu ích ở đây có nghĩa là
- các đồ thị có khả năng kiểm tra thuật toán trong tầm tay và
- chúng có thể được tạo ra một cách hiệu quả và hiệu quả.
Tôi biết rằng có nhiều mô hình cho biểu đồ ngẫu nhiên, vì vậy tôi đánh giá cao một số hiểu biết sâu sắc nhất về việc tạo biểu đồ trong vấn đề này.
Nếu "một số thuật toán" quá chung chung, vui lòng sử dụng các thuật toán tìm đường đi ngắn nhất như một lớp thuật toán cụ thể đang được thử nghiệm. Các đồ thị để thử nghiệm nên được kết nối và khá dày đặc (với xác suất cao, hoặc ít nhất là trong kỳ vọng). Để thử nghiệm, giải pháp tối ưu sẽ là tạo các biểu đồ ngẫu nhiên xung quanh một con đường ngắn nhất để chúng tôi biết kết quả mong muốn (mà không phải sử dụng thuật toán khác).