美文网首页寻路算法
寻找图的路径之寻路算法

寻找图的路径之寻路算法

作者: 人气小哥 | 来源:发表于2018-08-21 10:02 被阅读8次
--到地图去的关系表
local tbToMap = {}
tbToMap[1000] = {1001,1003,1010}
tbToMap[1001] = {1000,1002,1004,1009}
tbToMap[1002] = {1005,1001,1009}
tbToMap[1003] = {1000,1006,1004}
tbToMap[1004] = {1007,1001,1003,1005}
tbToMap[1005] = {1002,1004,1011}
tbToMap[1006] = {1003,1007}
tbToMap[1007] = {1004,1006,1008}
tbToMap[1008] = {1007}
tbToMap[1009] = {1001,1002,1010}
tbToMap[1010] = {1009,1000}
tbToMap[1011] = {1005}

local tbResult = {}--所有遍历结果

local FIRID = 1008
local LASID = 1002
local tbGoBy = {}--走过的路
local tbBlindAlley = {}--死路节点

local num = 0
local maxRecursionNum = 100--最大递归上限

local g_findOver = false

local function findMapPath(_firstId,_lastId)
    num = num + 1
    if num > maxRecursionNum then--递归超过上限
        return
    end

    print(_firstId, "_firstId = ")
    tbGoBy[_firstId] = true
    table.insert(tbResult, _firstId)
    if _firstId == _lastId then
        return
    else
        local dt = tbToMap[_firstId]
        for k, v in ipairs(dt) do
            if not tbGoBy[v] then
                local value = findMapPath(v, _lastId)
                print(value, "value = ")
                if value == nil then
                    return
                end
            end
        end

        --if not g_findOver then
            tbBlindAlley[_firstId] = true
        --end
        return _firstId
    end
end
--findMapPath(1008,1010)
findMapPath(1006,1009)
--findMapPath(1006,1002)

dump(tbBlindAlley, "tbBlindAlley = ")
print(num, "num = ")

dump(tbResult, "tbResult = ")

for i = #tbResult, 1, -1 do
    local mapId = tbResult[i]
    if tbBlindAlley[mapId] then
        table.remove(tbResult, i)
    end
end

dump(tbResult, "tbResult = ")

相关文章

  • 寻找图的路径之寻路算法

  • 百度无人驾驶apollo项目路径规划a*算法分析

    算法分析 车辆路径规划寻路算法有很多,apollo路径规划模块使用的是启发式搜索算法A*寻路算法。 a*算法是一种...

  • AStar模块

    IF框架总目录 简介 A* 算法 ,用于寻路。可以寻找到最短路径。由于本系列是介绍 如何只用IF框架的各个模块,并...

  • 数据结构与算法学习 (14)最短路径求解

    最短路径问题是图研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形...

  • 数据结构与算法-最短路径问题

    最短路径问题是图研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形...

  • 狄克斯特拉算法

    狄克斯特拉算法,当然是狄克斯特拉发明的。 这是相对广度优先搜索而产生的在加权路图中寻找最短路径的算法。 加权图,就...

  • javascript实现A*寻路算法

    A*寻路算法是游戏中经常用到的一种自动路径计算算法,比如连连看、NPC自动巡逻等等。本文章默认用户已经熟悉A*寻路...

  • A* Algorithm

    是一种搜索算法,广泛用于最短路径搜索和图遍历,在多个“节点”之间寻找路径。 由于其性能和准确性得到广泛使用。 算法...

  • 2018-07-22

    最短路径算法之Dijkstra算法 基本思想 通过Dijstra计算图G中的最短路径时,需要指定起点s(即从顶点s...

  • 算法和数据结构4.4贝尔曼-福特算法

    贝尔曼-福特算法是一种在图中求解最短路径的问题的算法。 最短路径问题就是加权图在指定了起点和终点的前提下,寻找从起...

网友评论

    本文标题:寻找图的路径之寻路算法

    本文链接:https://www.haomeiwen.com/subject/gcddiftx.html