phandat128 / ChessProject

0 stars 3 forks source link

Move Ordering: #2

Open LDTSon opened 1 year ago

LDTSon commented 1 year ago

Mỗi nước đi sẽ gán thêm 1 trọng số R biểu thị "độ cần thiết" của nước đi, sau đó duyệt danh sách nước theo R giảm dần. Cách tính R cần tìm hiểu thêm về Move Ordering in Chess

quang13542 commented 1 year ago

@LDTSon theo tôi thấy mình đang cố gắng giải quyết với depth=6 (depth=5 có tốc độ không đến nỗi quá tệ). Nếu vậy thì tôi nghĩ vấn đề đang là tạo cây và tính toán heuristic cho từng trạng thái chứ không phải quá trình cắt tỉa cây. Lí do: Quá trình sinh cây gồm duyệt tất cả các nước đi( thậm chí non-legal move) để tạo cạnh tới thế cờ tiếp theo, rồi sau đó khi tới nút lá phải tính score tại trạng thái đó. Nên độ phức tạp là tích của 2 quá trình đó. Còn quá trình cắt tỉa cây chỉ là giảm thời gian trên quá trình duyệt cây( quá trình duyệt cây chắc chắn nhỏ hơn quá trình sinh cây rất nhiều lân) Gợi ý hướng cải tiến: Phải có cách sinh cây khác tốt hơn ( tệ nhất là skip legal move) Có phần nào tôi hiểu sai hay có vấn đề trong phần lập luận không? Nếu không ông có thể gợi ý hướng nào hợp lý không? Thanks!!

LDTSon commented 1 year ago

@quang13542 ý ông là muốn giảm số nước hợp lệ cần duyệt để giảm số cây cần sinh ra. Nhưng mà những nước không hợp lệ (kiểu đi quân hở vua để bị chiếu hết ngay) thì điểm rất lệch, cũng như đã vào endGameScenario rồi nên không bị sinh thêm các tầng sau, còn muốn tỉa bớt nước hợp lệ dùng heuristic thì cũng khó do có nhiều ngoại lệ buộc phải đi nước trông có vẻ xấu (kiểu thí quân chiếu bí đối phương, đi vua nhưng không nhập thành vì bị chiếu,...). Mình chỉ có thể trừ điểm R để giảm ưu tiên chọn nước đó chứ khó có thể loại bỏ hẳn nước đó được.