- 博客(5)
- 收藏
- 关注
原创 游戏寻路算法A*的实现
[测试平台] Celeron 2.4GHZ + 1G内存[演示] (1) 地图大小(size),假设地图都是正方形size (2) 障碍百分比(rate):用于设置障碍点数,障碍数=size*size*rate/100(3) 测试软件的目标是用A*算法在地图中找到最短路径(4) 图示中size = 1000的地图用了624ms,这是比较好的情况,
2007-09-21 13:51:00 2690 1
原创 认识A*算法
总结以下几点(F = G + H):● A*/DFS/BFS都是对状态空间进行遍历的方法,区别在于前者通过估价函数H进行有选择的遍历。 可以这么说,当状态空间非常大的时候可以考虑用A*,只要能找到h就行● A*更新方式与DJ非常接近● A*从已访问结点中选取F最小的结点作为下一次的扩展的起点● 假设评价函数时间复杂度为f(n),设路径长度为n,那么总是时间复杂度 为O(n) * f(n)● G
2007-09-19 15:47:00 1228
原创 Physical Memory Viewer
读取物理内存的测试软件,暂时无法上传附件,下次补上。 利用undocumented function : NtOpenSection / NtMapViewOfSection / NiUnmapViewOfSection输入格式为16进制数据,根据4K每页边界对齐读取一页
2007-09-14 11:26:00 1094 2
原创 基数排序算法测试及性能分析
基数排序算法复杂度为O(n),在所有排序算法中是最快的,但并不是所有情况都能使用。使用基数排序的一个很重要的思想是:把关键字拆分为多个字关键字,然后依次按子关键字排序。有两种方式,主优先(0号-->(n-1)号),最次优先((n-1)号-->0号)从目标对于整数排序来看,后者比较方便,如果使用前者的话,对0号子关键字排序后还需要记录不同的子序列,每进行一次子关键字排序必定会产生一系列的字序列,结
2007-09-14 11:03:00 1717 1
原创 利用NtUnmapViewOfSection强制卸载模块
确实可以卸载指定进程指定位置的模块,但有几个问题:[1] PEB的模块列表中还存在该模块的记录,大部分模块枚举函数都是枚举这个列表[2] 可能会出现访问异常看来RING3下是不可能做到强制卸载模块的完美实现,要进ring0才行。下面是测试代码typedef ULONG (WINAPI *PFNNtUnmapViewOfSection)( IN HANDLE ProcessHandle
2007-09-14 10:19:00 3068
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人