我是一个新手,对AI/算法领域不熟悉,目前正在尝试解决一个问题,之前只在2D网格数组上实现了A*寻路。
问题如下:
考虑一个由40名学生(20女,20男)组成的班级,他们的身高各不相同,并且有自己的座位偏好(行、列或两者都有),教室里有50个座位,每个学生必须占据一个座位,座位的布局如下:
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ WHITE BOARD ]
为了最佳的座位安排,我们选择了一个评分图表:
- 不要有学生直接坐在前面:+4分
- 直接坐在前面的学生至少比你矮2厘米:+4分
- 旁边坐的学生异性:+8分
- 一列中有4个同性别的学生:-10分
- 从白板开始高度递增的列:+20分
- 根据个人喜好安排座位:+2分
我的想法是使用修改后以适应当前问题的A*算法:
起点:所有学生都未就座
路径成本:转换后的分数增量
目标:所有学生就座
这里的问题是,不知道能够获得的最大分数,并且我预见到可能会出现程序无法提前计划的情况(程序可能会先选择+8,然后再选择+4,但更好的方法是先选择+2,接着选择+20)。我知道可以查找特定深度,比如深度为5。这引出另一个问题:我应该使用多少深度?我不想访问所有可能的状态。
1. 这种问题有多难?(从解决迷宫到解决国际象棋的规模)
2. 我是否在解决这个问题的正确路径上?