VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: 八戒2

擂台第69期[混乱的顶点]

  [复制链接]
发表于 2011-2-22 22:05:31 | 显示全部楼层
回复 仙剑魔 的帖子

换算法很简单,只要把DLX思路拿过来就行了,就是不用AlgorithmX,但是每次挑选可能性最少的顶点来暴力搜索……要不然换成逻辑推理型算法(和数独一样)……

另外VB专用高速DLX是什么意思?我那个就是VB的DLX实现,有个地方我发现没改过来,就是还是使用递归的,理论上可以改成非递归,用变长数组充当栈,然后疯狂Goto,这样可能会快一丁点……

PS:其实我抠出来的那个模块原本是附带双接口的,VB版算法和用VB调用C版算法的DLL,估计后者会快不少(两个都是N久以前我自己写的,现在看代码看得一塌糊涂,不懂是什么意思了……)不过参赛版不作弊,所以把DLL调用相关代码抠掉了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-23 00:29:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-2-23 15:37:28 | 显示全部楼层
今天我改了改,快了10%,但是如果把所有解都输出到ListBox里面,速度马上被抵消掉了不知道怎么搞的……
回复 支持 反对

使用道具 举报

发表于 2011-2-23 16:29:22 | 显示全部楼层
本帖最后由 acme_pjz 于 2011-2-23 17:55 编辑

挖塞,把变长数组改成定长数组,速度竟然变成原来的4倍……

[EDIT] 修正一个严重Bug(数组大小设得太小了),在运行super-crazy.txt的时候会导致算法失败……

有程序有真相:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2011-2-23 17:41:04 | 显示全部楼层
晕,怎么图传不上来了(似乎文件名不能带中文……)如图所示,crazy.txt运行速度是原来的4倍还要快……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2011-2-23 18:18:58 | 显示全部楼层
25L与17L答案不同,说明有多组解,能把所有解(不含旋转对称)都解出来吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2011-2-23 22:31:32 | 显示全部楼层
本帖最后由 acme_pjz 于 2011-2-23 22:33 编辑

回复 ymismy 的帖子

?,你什么眼神啊,难道没看到“解数=4769”和“解列表”ListBox里面有许多数字么?点击每一个就可以查看相应解……

[EDIT] 另外你给的那个截图的程序不是我编的,是仙剑魔编的……我那个是可以显示全部解的(只要不超过8192个解就可以)……
回复 支持 反对

使用道具 举报

发表于 2011-2-23 23:02:45 | 显示全部楼层
(不含旋转对称)将旋转对称剔除

点评

将旋转对称剔除太罗嗦了,而且原题根本没有要求,所以就免了……  发表于 2011-2-24 13:02
回复 支持 反对

使用道具 举报

发表于 2011-2-24 15:06:02 | 显示全部楼层
那个8*8的满点
输入进去64*336的矩阵
结果运行了8秒
得到结果4769个解
为什么这么慢咧...
回复 支持 反对

使用道具 举报

发表于 2011-2-24 15:49:30 | 显示全部楼层
本帖最后由 acme_pjz 于 2011-2-24 15:51 编辑

回复 仙剑魔 的帖子

编译了没有?开所有高级优化了没有?(抛弃变长数组了没有?不过不推荐)我原来用变长数组是2.5秒,升级之后变成0.5秒了……

[EDIT] 另外每个人电脑的CPU不一样,所以要两个程序在同一台电脑上测试才能看出结果……

[EDIT2] 本来我还想开多线程搜索的,不过VB偏要老汉法才能开多线程,太麻烦,所以就算了,而且DLX并行化很不好设计算法……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-1 00:41

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表