迪杰斯特拉 算法 在游戏中的运用

Posted big-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迪杰斯特拉 算法 在游戏中的运用相关的知识,希望对你有一定的参考价值。

 

迪杰斯特拉    (Dijkstra). 是算最短节点的。虽然网上有很多 文献资料和代码,不过并不适合我的口味。于是简单的改造了下。

技术图片

 

纯手工鼠标画图一张。

    static void Main(string[] args)
        {
            int n = 7, en = 11;
            //-1表示不可达
            int[,] a = new int[,] { { 0, 6, 3, -1, -1, -1,-1 }, { 6, 0, 2, 5, -1, -1,-1  }, { 3, 2, 0, 3, 4, -1 ,-1}, 
            { -1, 5, 3, 0, 2, 3 ,2}, { -1, -1, 4, 2, 0, 5,-1 }, { -1, -1, -1, 3, 5, 0 ,3}, { -1, -1, -1, 2, -1, 3 ,0}  };
            ConsoleApplication2.Dijkstra.GraphClass gc = new ConsoleApplication2.Dijkstra.GraphClass();
            gc.CreateMGraph(n, en, a);
            Console.WriteLine(gc.DispMGraph());
            gc.Dijkstra("1","5");
            Console.ReadKey();
        }

技术图片

大致运行 效果就是这样的,好处就是  输入 起点和终点坐标 快速查找到 最佳路径和距离。

下面我来说说

Dijkstra  算法 在 游戏中的运用。

技术图片

比如 上面这个地图,就比较适合Dijkstra方式. 当然 这种算法也有他的 缺点,就是 初始化数据 比较大。

优点就是 真是感强。记得很久以前有个叫 武林英雄的游戏,他也是这么做的,路径导航 显示人物需要走的地方,也可以把大地图 切割成小地图。

分成 大 市县乡村等,我们 从  一个  城市 去 另一个 城市,不需要 跳到 最大城市 再找,我们只要 从 甲城市的  某个 村 就能 去 乙城市的 某个村。就好像  南京到安徽, 只要在 马鞍山附件,直接就可以过去。

以上是关于迪杰斯特拉 算法 在游戏中的运用的主要内容,如果未能解决你的问题,请参考以下文章

(王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想代码演示答题规范)

迪杰斯特拉算法完整代码(Java)

求多重邻接表的迪杰斯特拉算法

迪杰斯特拉算法为啥不能有负权边

图的应用——最短路径(迪杰斯特拉算法)

迪杰斯特拉算法的算法思想