摘要: 这里的哈希函数是用能对许多全排列问题适用的方法。取n!为基数,状态第n位的逆序值为哈希值第n位数。对于空格,取其(9-位置)再乘以8!。例如,1 3 7 2 4 6 8 5 8 的哈希值等于:0*0! + 0*1! + 0*2! + 2*3! + 1*4! + 1*5! + 0*6! + 3*7! + (9-8)*8! = 55596 <9! 具体的原因可以去查查一些数学书,其中1 2 3 4 5 6 7 8 9 的哈希值是0 最小,8 7 6 5 4 3 2 1 0 的哈希值是(9!-1)最大,而其他值都在0 到(9!-1)中,且均唯一。例如三个元素的排列排列 逆序Hash123 00 阅读全文
posted @ 2012-09-29 23:13 Missa 阅读(848) 评论(0) 推荐(0) 编辑
摘要: 要不是做这题之前就知道可以用km匹配做的话,估计也想不出最短距离和的匹配一定不会交叉。。。画个图:假如A<->C B<->D匹配后的距离和值最小且交于E.则一定可以得到 A<->D B<->C的匹配的距离和小于A<->C B<->D。矛盾。故最小匹配后一定无交点。Km算法求二分图最优值匹配:注意要用:double。。。明明说了是Each ant colony and apple tree is described by a pair of integer coordinatesxandy(−10 000≤x,y≤10 00 阅读全文
posted @ 2012-09-29 15:26 Missa 阅读(750) 评论(1) 推荐(0) 编辑
摘要: 有N个工件要在M个机器上加工,有一个N*M的矩阵描述其加工时间。同一时间内每个机器只能加工一个工件,问加工完所有工件后,使得平均加工时间最小(等待的时间+加工的时间)。假设某个机器处理了k个玩具,时间分别为a1,a2…..,ak那么该机器耗费的时间为a1+(a1+a2)+(a1+a2+a3).......(a1+a2+...ak) 即a1*k + a2 * (k - 1) + a3 * (k - 2).... + akai玩具在某个机器上倒数第k个处理,所耗费全局的时间为ai*k对每个机器,最多可以处理n个玩具,拆成n个点,1~n分别代表某个玩具在这个机器上倒数第几个被加工的,对于每个玩具i, 阅读全文
posted @ 2012-09-29 13:03 Missa 阅读(864) 评论(0) 推荐(0) 编辑