[ Đã đặt lại tiêu đề, mong mod xem xét và có gì thì nhắc nhở chứ đừng xóa bài của mình nhé]
Chào các thành viên của Cộng đồng C Việt. Mình đang làm một game dựa theo game Guess Who (http://www.funzac.com/play/Guess%20You!.html)
Mô tả game của nhóm mình như sau :
Mỗi lượt chơi có một bộ dữ liệu gồm 24 ảnh của một nhân vật, mỗi nhân vật có các feature như :
1. Màu mắt
2. Màu tóc
3. Có đeo kính hay không
4. Có râu hay không
5. Màu da
v.v...
Mỗi feature lại có thể có nhiều giá trị như màu mắt có thể nâu, xanh..., màu tóc có thể là đen, trắng, vàng...(số lượng giá trị không hạn chế, hoặc nếu cần thì có thể khoanh vùng lại là hạn chế, chẳng hạn mỗi feature chỉ có tối đa 3 giá trị).

Ở chế độ người chơi với máy. Máy và người, mỗi bên sẽ chọn 1 nhân vật trong 24 nhân vật đó (đối với máy thì có thể chọn ngẫu nhiên). Sau đó, máy và người, ở lượt chơi của mình, sẽ hỏi đối phương một câu hỏi về nhân vật mà đối phương đã chọn , đối phương chỉ phải trả lời Đúng hoặc Sai. Tùy vào câu trả lời nhận được, máy (và người) sẽ khoanh vùng đối tượng nghi vấn mà mình cho là nhân vật mà đối phương đang lựa chọn. Ai tìm ra được nhân vật mà đối phương lựa chọn trước thì người đó sẽ chiến thắng.
VD cho một lần chơi : Máy chọn A( da vàng, tóc đen, có râu...), người chọn B(da trắng, tóc vàng, không râu...).
Máy : Có phải nhân vật của anh da vàng không ?
Người : Không --> Máy loại những người da vàng ra khỏi danh sách nghi vấn.
Người hỏi tiếp : Có phải nhân vật của anh có tóc đen không ?
Máy : có --> Người chơi loại bỏ những nhân vật không có tóc đen...
... Cứ thế cho tới khi nào có người tìm ra nhân vật của đối phương trước.

Vấn đề của mình là, tìm một thuật toán để với 24 nhân vật đầu vào với các thuộc tính màu mắt, màu tóc, màu da, ... như trên, xây dựng một bộ câu hỏi với ít câu hỏi nhất (theo thứ tự), sao cho sau khi hỏi các câu đó, máy chắc chắn tìm ra nhân vật mà người chơi đã lựa chọn.

Giải pháp hiện tại của nhóm mình (vẫn chưa được chứng mình) : ở mỗi lượt chơi, tìm thuộc tính mà sao cho xác suất xuất hiện nó trong các nhân vật có độ lệch so với 0.5 là nhỏ nhất, sau đó đặt câu hỏi (Yes/No question) đối với thuộc tính đó...
Các bạn có thể giúp mình đề xuất một thuật toán để giải quyết vấn đề trên được không? Mình xin cảm ơn.