再次提升“华容道自动求解”程序效率
Sumtec指出:“AVLTree是否可以用HashTable来替代,毕竟你的目的不是要排序,而是要检验是否容易产生重复。从纯粹的理论上来说,HashTable在这方面的性能消耗应该比AVLTree要好一些,因为AVLTree的复杂度至少是O(Log2(x))级别的,而HashTable则接近于O(C)级别的。”,因此我将程序重新进行了调整,目的是:在不考虑内存使用的情况下再次提高系统执行效率。
我的修改包括两部分:1、用HashTable取代AVLTree,设计并实现自己的HashCode算法。2、修改华容道布局表示方式,从原来的4字节表示改为8字节表示,这么做可以省略掉原有程序中的排序操作。
经过修改后,每个节点平均比较3~5次便可知道是否有重复,接近于O(C)级别。Int64的布局表示省掉了排序,效率进一步提升。但内存占用总体要增加(以内存换效率)。
现在,原有系统中第四个布局的求解时间从最初的6.67秒降到了消除Execption影响后的1.55秒,现在又降到了使用HashTable的0.90秒。贴张图上来:
源代码我会随后放上来,并且进一步完善《华容道与数据结构》系列,这次的重点放在HashTable上面。
转载于:https://www.cnblogs.com/zhenyulu/archive/2005/02/20/106450.html
再次提升“华容道自动求解”程序效率相关推荐
- 正在编写推箱子游戏的自动求解程序
网上搜索了一下,有好多人现成的产品,不少国产的.编写这个程序只是为了回忆一下算法.不能丢了. 自动求解有俩种方案:一个是求最小行走步骤,一个是求最小推箱子数目. 第一种算法简单些,只要将小人推动的四个 ...
- 百度ACE智能交通能提升最高30%城市通行效率,刚刚拿下世界互联网大会最高荣誉...
郭一璞 假装发自 乌镇 量子位 报道 | 公众号 QbitAI 乌镇的世界互联网大会刚刚开始,就传来了智能交通领域的好消息. 百度ACE智能交通,被世界互联网大会评为了世界互联网领先科技成果. 而且, ...
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...
- dotnet watch+vs code提升asp.net core开发效率
在园子中,已经又前辈介绍过dotnet watch的用法,但是是基于asp.net core 1.0的较老版本来讲解的,在asp.net core 2.0的今天,部分用法已经不太一样,所以就再写一篇文 ...
- Android Studio 2.0:速度提升,极大提高开发效率
转至:http://android.jobbole.com/82127/ Android Studio 2.0:速度提升,极大提高开发效率 11月24日,在 Android Developer Sum ...
- OpenCV程序效率优化方法1
OpenCV程序效率优化方法 使用指针方法遍历像素点 OpenCV中图像的存储对象为Mat类,该类提供了多种方式访问像素的的值.一般来说分为以at方法类与ptr指针的方式访问,相较之下使用指针ptr的 ...
- paddle中的自动求解梯度 : autograd.backward
简 介: 对于paddle中的autograd.backward进行测试.并对集中常见到的函数进行测试. 关键词: gradient #mermaid-svg-FAf464xhZzlqQIW6 .la ...
- JAVA用多线程反而变慢了_Java中使用多线程不能明显提高程序效率的一些原因
java中使用多线程不能明显提高程序效率的一些原因. 使用多个线程来处理多任务的时候,效率肯定是有提高的.但是必须要慎用,否则容易出现问题. 1.多线程主要是为了充分利用多核cpu,大内存这些资源. ...
- excel android 公式,两个超实用的Excel万能公式,瞬间提升你10倍工作效率!
相信大家在平时的工作中,都会经常有用到公式的需要,但是下面这些公式你用过吗,今天小编就带大家一起看看吧! 1. SUM函数 这个函数不仅在我们学习的过程中会用到,即便到了工作后,也经常需要对各种数据进 ...
最新文章
- 2021年大数据ELK(九):使用VSCode测试分词器
- 安全公司:苹果iOS10备份功能安全性比iOS9差很多
- [转]WebPack 常用功能介绍
- linux gnome 桌面,GNOME Linux桌面
- centos7挂载nas存储_Geeki说丨浅谈几种存储添加主机映射方式
- 原型模式和C++的拷贝构造函数有什么区别
- Sublime Text 4设置光标闪烁
- 如何选择RabbitMQ和Kafka
- 帮助UI设计师缕清思路的GUI模板素材
- 13.字符串,结构,联合
- DPDK之KNI原理
- matlab和keil下如何查找数组最大值的下标(角标)
- 贝叶斯(一)先验分布与后验分布
- 时序数据预测:Holt-Winters
- Openwrt如何添加SD_Card?看这里
- CCjump解决:在微信中访问app下载链接提示“已停止访问该网页”
- 计算机截图方法,电脑简单又实用的截图方法推荐
- 互联网web直播点播平台EasyDSS如何将部分数据从t_lives表迁移到其他数据库?
- linux版本市场占有率,2020年5月OS市场占有率报告:Ubuntu和Linux分别占有1.89%和0.97%...
- 老博会|2023第九届北京国际老年用品展览会
热门文章
- Android实现号码归属地查询
- 怎样运用Oracle的BFILE
- silverlight 加载大图片进度提示
- python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...
- linux批量执行一个脚本文件,shell脚本示例:批量比较多个文件的内容是否相同...
- android点赞刷新列表图片闪烁,RecyclerView使用——有效解决刷新数据错乱,图片闪烁,OOM问题...
- 26. GD32F103C8T6入门教程-CAN外设回环测试
- Python基础-3内建函数 type() cmp()
- pymol怎么做底物口袋表面_汽车表面有划痕怎么办?建议大家这样做,自己动手就解决...
- oracle 使用数据泵恢复,oracle 使用数据泵 导出整个db 并恢复