动态规划_可视化校园导航Floyd算法应用

这篇具有很好参考价值的文章主要介绍了动态规划_可视化校园导航Floyd算法应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

        引言

        图片展示

        视频展示

        针对校园导航问题的分析

        关键技术和算法介绍

        详细介绍:算法的实现

        总结

        代码

        附件:Map.png


引言

        本文主要通过详细的程序打印和作者的推理过程,描述作者对Floyd算法的理解,阐述其中的动态规划思想是如何进行和应用。作者使用Python简单、方便移动的可视化,与Floyd算法相结合,让用户对最短路径一目了然,阅读完本文作者的推理过程后,读者更能对Floyd其中的原理以及对动态规划思想更能深刻体会。

图片展示

动态规划_可视化校园导航Floyd算法应用

 

视频展示

最短路径展示

针对校园导航问题的分析

        本课题要解决的问题是如何在平面图上找出任意场所到达另一场所的最佳路径,要求是最短的路径、而且至少包括10个以上的场所、每个场所间有不同的路、以及界面需可视化。本课题也有一定的限制条件,即每两个场所的路长不能相同。进行本设计要达到的具体的目标为能够成功实现便捷地操作校园导航地图,通过点击就能直观地展现任意两个场所之间的最短路径。

关键技术和算法介绍

        本文用到的关键技术是动态规划,动态规划就是可以将问题拆分成若干子问题并实时保存子问题已解决的答案的一种算法,这是它比分治法更优的地方,不用去重复从头开始计算。本课题所用程序的设计思想是使用Python语言,以Floyd算法的二维数组邻接矩阵为基础,通过不断刷新数组来记录各点到各点的中间点,最后通过反推获取最终最短的路径。

动态规划_可视化校园导航Floyd算法应用

核心代码

#==========================================================================================
for k in range(10):
    for i in range(10):
        for j in range(10):
                if AllZeroList[i][j]> AllZeroList[i][k] + AllZeroList[k][j]:
                        AllZeroList[i][j] = AllZeroList[i][k] + AllZeroList[k][j]    
                        path[i][j] = path[k][j]
#==========================================================================================                  

网上有其他版本,如最后path[i][j] = path[k],这个可能会在一些小地方会出错,这种属于中间点实时更新的策略错误。

AllZeroList是表示路径长度二维数组,

Path是表示动态规划记录中间点的二维数组

i是行

j是列

k在我的理解看来,是用来帮助i和j的辅助参数,时而变成i即行,时而变成j即列,确保路径长度二维数组里的每个元素都可以全部遍历和判断。哈哈哈我就把k称为动态规划参数吧。

这个是详细打印观看版,你可以详细地观看里面变化,从而得出自己的规律

#====================================详细打印观看变化版====================================
for k in range(10):
    for i in range(10):
        for j in range(10):
                if i>=7:
                        print("*************************************")
                        print("【测试】AllZeroList[i][j]:",AllZeroList[i][j])
                        print("【测试】AllZeroList[i][k]:",AllZeroList[i][k])
                        print("【测试】AllZeroList[k][j]:",AllZeroList[k][j])
                        
                        print("k,i,j:",k,i,j)
                        
                        
                if AllZeroList[i][j]> AllZeroList[i][k] + AllZeroList[k][j]:
                        print("\n\n------------------进入判断------------------")
                        AllZeroList[i][j] = AllZeroList[i][k] + AllZeroList[k][j]
                        for c in range(10):
                                   print("path3:",path[c],end="\n")
                        print("【测试】k:",k)
                        print("【测试】i:",i)
                        print("【测试】j:",j)
                                
                        print("【测试】path[k][j]:",path[k][j])
                        print("【测试】path[i][j]:",path[i][j])
                                    
                        path[i][j] = path[k][j]
                        print("-----------------------------------【测试】path[i][j]:",path[i][j])
                        for d in range(10):
                                print("path4:",path[d],end="\n")
#========================================================================================                

详细介绍:算法的实现

  • 绘制地图。

                海龟turtle绘制地图路线。

                根据地图路径创建二维数组邻接矩阵。

                                从自己到本身为0

                                两个点没有直接相连就设为无穷大inf

                                将地图各个路径长度导入

  • 创建二维数组Path记录中心点

                用i、j、k配合三个for循环比较地图已计算出来的各自距离的值,将AllZeroList[i][j]与AllZeroList[i][k]和AllZeroList[k][j]之和相比较,一旦大于这个和就将AllZeroList[i][k]和AllZeroList[k][j]之和赋给AllZeroList[i][j],并且需要同时更新中间点,将path[k][j]赋给path[i][j],让最短路径里的每个节点都不会出错。

  • 创建存入两个点的方法,比较两个数,如果不相等就去找两点的中间点,然后将中间点作为新的y又开始新一轮的比较,其中每找一次中间点就记一次中间点的数是多少,直到x和y相等就停止,最后将记的中间点从后往前推,也就是我们要的最短路径。
  • 海龟turtle重置,根据上面二维数组获取的最短路径对地图进行绘制,用蓝色线条显现出最短路径,从而完成实现可视化。

总结

Floyd算法就是使用动态规划的思想,利用3个for循环将AllZeroList[i][j]与AllZeroList[i][k]和AllZeroList[k][j]之和相比较,一旦大于这个和就将AllZeroList[i][k]和AllZeroList[k][j]之和赋给AllZeroList[i][j],并且需要同时更新中间点,将path[k][j]赋给path[i][j],让最短路径里的每个节点都不会出错。并创建存入任意两个点的方法,比较两个数,如果不相等就去找两点的中间点,然后将中间点作为新的y又开始新一轮的比较,其中每找一次中间点就记一次中间点的数是多少,直到x和y相等就停止,最后将记的中间点从后往前推,也就是我们要的最短路径。这就是Floyd弗洛伊德算法。

代码

import turtle
import time
from turtle import Turtle, mainloop
import numpy
import numpy as np
import sys
sys.setrecursionlimit(100000) #设置为十万,突破局限 

import threading


flag=1
control=0

def BreakThroughTheLimitation():
	print("1")

if __name__ == '__main__':
    threading.stack_size(200000000)
    thread = threading.Thread(target=BreakThroughTheLimitation) 
    thread.start()



##time.sleep(5)
turtle.hideturtle()
turtle.bgpic("Map.png")

turtle.setup(1800,920,0,0)
turtle.pensize(10)


turtle.speed(0)
turtle.delay(0)  #调速


turtle.title("庄彦涛_校园导航Floyd算法")


#===============================================
def ChuFa(control):        #1至2
    turtle.up()
    #提笔隐藏

    turtle.goto(-500,-395)
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('1',font=("隶书",20,"bold"))
    turtle.down()
##    time.sleep(5)

    turtle.up()
    turtle.left(135)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(160):
        turtle.fd(2)

        
    turtle.hideturtle()
#===============================================    


#===============================================
def Place1(control):       #2至4
    #提笔隐藏
    turtle.up()
    turtle.goto(-740,-145)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('2',font=("隶书",20,"bold"))
    


    turtle.up()
    turtle.right(120)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(170):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place2(control):    #4至1
    #提笔隐藏
    turtle.up()
    turtle.goto(-395,-55)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('4',font=("隶书",20,"bold"))


    turtle.up()
    turtle.right(123)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(162):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================
    

#===============================================
def Place3(control):     #2至3
    #提笔隐藏
    turtle.up()
    turtle.goto(-740,-145)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('2',font=("隶书",20,"bold"))


    turtle.up()
    turtle.left(175)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(180):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place4(control):     #3至5
    #提笔隐藏
    turtle.up()
    turtle.goto(-590,215)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('3',font=("隶书",20,"bold"))


    turtle.up()
    turtle.right(80)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(180):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place5(control):    #5至4
    #提笔隐藏
    turtle.up()
    turtle.goto(-225,135)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('5',font=("隶书",20,"bold"))
    


    turtle.up()
    turtle.right(120)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(110):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================



#===============================================
def Place6(control):     #4至6
    #提笔隐藏
    turtle.up()
    turtle.goto(-395,-55)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('4',font=("隶书",20,"bold"))


    turtle.up()
    turtle.left(133)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(172):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def ChuFa_1(control):      #1至6
    turtle.up()
    #提笔隐藏

    turtle.goto(-500,-395)
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('1',font=("隶书",20,"bold"))
    turtle.down()


    turtle.up()
    turtle.left(35)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(280):
        turtle.fd(2)

        
    turtle.hideturtle()
#===============================================



#===============================================
def Place7(control):    #5至6
    #提笔隐藏
    turtle.up()
    turtle.goto(-225,135)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('5',font=("隶书",20,"bold"))
    


    turtle.up()
    turtle.right(80)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(130):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place8(control):     #5至9
    #提笔隐藏
    turtle.up()
    turtle.goto(-225,135)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('5',font=("隶书",20,"bold"))
    


    turtle.up()
    turtle.left(60)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(200):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================



#===============================================
def Place9(control):    #6至7
    #提笔隐藏
    turtle.up()
    turtle.goto(-20,-65)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('6',font=("隶书",20,"bold"))


    turtle.up()
    turtle.right(15)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(110):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place10(control):   #7至8
    #提笔隐藏
    turtle.up()
    turtle.goto(230,-65)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('7',font=("隶书",20,"bold"))
    


    turtle.up()
    turtle.left(40)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(90):
        turtle.fd(2)

        
    turtle.hideturtle()  
#===============================================


#===============================================
def Place11(control):    #9至10
    #提笔隐藏
    turtle.up()
    turtle.goto(190,250)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('9',font=("隶书",20,"bold"))


    turtle.up()
    turtle.right(35)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(220):
        turtle.fd(2)

    turtle.dot(60,"#ffdd20")    
    turtle.hideturtle()  
#===============================================


#===============================================
def Place12(control):   #8至10
    #提笔隐藏
    turtle.up()
    turtle.goto(390,70)
    turtle.down()
    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('8',font=("隶书",20,"bold"))


    turtle.up()
    turtle.left(34)
    if control == 0:
        turtle.pencolor("#665f35")
    else:
        turtle.pencolor("#0000FF")
    for i in range(16):
        turtle.fd(2)
    turtle.down()
    for i in range(158):
        turtle.fd(2)

    turtle.dot(60,"#ffdd20")
    turtle.pencolor("#665f35")
    turtle.write('10',font=("隶书",20,"bold"))

        
    turtle.hideturtle()  
##===============================================

    
ChuFa(control)
Place1(control)
Place2(control)
Place3(control)
Place4(control)
Place5(control)
Place6(control)
ChuFa_1(control)
Place7(control)
Place8(control)
Place9(control)
Place10(control)
Place11(control)
Place12(control)


def distance():
    turtle.up()
    turtle.pencolor("#665f35")

    #=================================================
    turtle.goto(-650,-345)
    turtle.write('40米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(-650,-155)
    turtle.write('50米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(-520,-245)
    turtle.write('50米',font=("simkai",20,"normal"))
    #=================================================

    #------------------------------------------------------------------------

    #=================================================
    turtle.goto(-380,80)
    turtle.write('30米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(-150,70)
    turtle.write('30米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(-280,-100)
    turtle.write('50米',font=("simkai",20,"normal"))
    #=================================================

    #------------------------------------------------------------------------

    #=================================================
    turtle.goto(-480,200)
    turtle.write('50米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(-600,100)
    turtle.write('70米',font=("simkai",20,"normal"))
    #=================================================


    #------------------------------------------------------------------------


    #=================================================
    turtle.goto(-200,-230)
    turtle.write('100米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(80,-120)
    turtle.write('30米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(330,-20)
    turtle.write('20米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(400,150)
    turtle.write('40米',font=("simkai",20,"normal"))
    #=================================================


    #------------------------------------------------------------------------


    #=================================================
    turtle.goto(10,220)
    turtle.write('80米',font=("simkai",20,"normal"))
    #=================================================


    #=================================================
    turtle.goto(390,300)
    turtle.write('90米',font=("simkai",20,"normal"))
    #=================================================


distance()
x=0
y=0

def submit1():
    global x
    screen1 = turtle.Screen()
    answer1 = screen1.textinput("庄彦涛_校园导航Floyd算法",\
        "----------------------请输入出发地的编号----------------------")


    if answer1 is None:
        print("未输入编号!")
##        screen1.clear()
##        screen1.bye()
    else:
        print("好的!")
        x=int(answer1)-1



def submit2():
    global y
    screen2 = turtle.Screen()
    answer2 = screen2.textinput("庄彦涛_校园导航Floyd算法", \
        "----------------------请输入目的地的编号----------------------")


    if answer2 is None:
        print("未输入编号!")
        screen2.clear()
        screen2.bye()
    else:
        print("好的!")
        y=int(answer2)-1




f = float('inf')  # float('inf')表示无穷大

print(f)



#因为整个地图有10个地点
AllZeroList=[[0] * 10 for i in range(10)]  #全零二维数组  (n行,n列 ,填充数)
for d in range(10):
    print("AllZeroList:",AllZeroList[d],end="\n")  




B=[40,50,100,40,70,50,70,50,50,50,30,50,50,30,30,80,100,50\
   ,30,30,30,20,20,40,80,90,40,90]


Name="Judge"

for p in range(1,10+1):
    Choose=Name+str(p)
    if p==1:
        Choose=[1,2,4,6]    #是否相邻判断列表1
    if p==2:
        Choose=[2,3,4,1]    #是否相邻判断列表2
    if p==3:
        Choose=[3,2,5]      #是否相邻判断列表3
    if p==4:
        Choose=[4,1,2,5,6]  #是否相邻判断列表4
    if p==5:
        Choose=[5,3,4,6,9]  #是否相邻判断列表5
    if p==6:
        Choose=[6,1,4,5,7]  #是否相邻判断列表6
    if p==7:
        Choose=[7,6,8]      #是否相邻判断列表7
    if p==8:
        Choose=[8,7,10]     #是否相邻判断列表8
    if p==9:
        Choose=[9,5,10]     #是否相邻判断列表9
    if p==10:
        Choose=[10,9,8]    #是否相邻判断列表10


    
    print(Choose)
    
    for q in range(1,10+1):
        print("q:",q)
        print("Choose[0]:",Choose[0])
        if q==Choose[0]:
            AllZeroList[p-1][q-1]=0
        else:
            if q in Choose:
                AllZeroList[p-1][q-1]=1
            else:
                AllZeroList[p-1][q-1]=f
                #用f来表示无穷大,即两个地点没有直接连在一起
                
print("  1 2 3 4 5 6 7 8 9 10")
for e in range(10):
    print("AllZeroList:",AllZeroList[e],end="\n")
    
print(B)
for p in range(1,10+1):
    for q in range(1,10+1):
        if AllZeroList[p-1][q-1]==1:
            AllZeroList[p-1][q-1]=B.pop(0)
        
print("\n    1   2   3   4   5   6   7   8   9   10")
for f in range(10):
    print("AllZeroList:",AllZeroList[f],end="\n")  

path=[[i] * 10 for i in range(10)]
for b in range(10):
    print("path1:",path[b],end="\n")


#=================================简化版===================================================================
##for k in range(10):
##    for i in range(10):
##        for j in range(10):
##                if AllZeroList[i][j]> AllZeroList[i][k] + AllZeroList[k][j]:
##                        AllZeroList[i][j] = AllZeroList[i][k] + AllZeroList[k][j]    
##                        path[i][j] = path[k][j]
#====================================================================================================                       


#详细打印观看变化版
for k in range(10):
    for i in range(10):
        for j in range(10):
                if i>=7:
                        print("*************************************")
                        print("【测试】AllZeroList[i][j]:",AllZeroList[i][j])
                        print("【测试】AllZeroList[i][k]:",AllZeroList[i][k])
                        print("【测试】AllZeroList[k][j]:",AllZeroList[k][j])
                        
                        print("k,i,j:",k,i,j)
                        
                        
                if AllZeroList[i][j]> AllZeroList[i][k] + AllZeroList[k][j]:
                        print("\n\n------------------进入判断------------------")
                        AllZeroList[i][j] = AllZeroList[i][k] + AllZeroList[k][j]
                        for c in range(10):
                                   print("path3:",path[c],end="\n")
                        print("【测试】k:",k)
                        print("【测试】i:",i)
                        print("【测试】j:",j)
                                
                        print("【测试】path[k][j]:",path[k][j])
                        print("【测试】path[i][j]:",path[i][j])
                                    
                        path[i][j] = path[k][j]
                        print("-----------------------------------【测试】path[i][j]:",path[i][j])
                        for d in range(10):
                                print("path4:",path[d],end="\n")

print("\n")
for c in range(10):
    print("path2:",path[c],end="\n")
    
route = []
change=0

def RouteOfTwoPlace(x,y):
    print("==========新的一轮计算==========")
    print(x)
    print(y)
    global route
    global change
    if x>y:
        change=x
        x=y
        y=change
    def AddRoute(x,y):
        print("----------------")
        print(route)
        print("1x:",x)
        print("-------------------------------------1y:",y)
        if x!=y:
            print("1path[x][y]:",path[x][y])
            AddRoute(x,path[x][y])
        print("*****\/*****")
        print("2x:",x)
        print("2y:",y)
        print("*****/\*****")
        print("最小的值从后往前反推,就像栈一样,羽毛球筒正着放进去,反着把羽毛球y拿出来,y加进route里:",y)
        
##        return route.append(y+1)
        return route.append(y)
        #如果x和y相等那么此时的y就是最短路径上的其中一个路线点,加进route里


    AddRoute(x,y)
    route2=route
    RouteStr=str(route)
    RouteStr=RouteStr.replace(',','-->')
    print(f"测试:从{x+1}到{y+1}的最短路径为:{RouteStr}")

    print("\n\n++++++++++++++++++++++++++++++++++++++\n\n")
    for t in range(len(route)):
        route[t]+=1
    RouteStr=str(route)
    RouteStr=RouteStr.replace(',','-->')
    print(f"展示给客户:从{x+1}到{y+1}的最短路径为:{RouteStr}")
    
for g in range(10):
    print("AllZeroList:",AllZeroList[g],end="\n")  

def submit3():
    global y
    global flag
    screen3 = turtle.Screen()
    answer3 = screen3.textinput("庄彦涛_校园导航Floyd算法", \
        "------------是否继续测算?    是【除0外任意键】   否【0】----------------------")

    print(type(answer3))
    if answer3=='0':
        print("已退出!")
        flag=0
##        screen2.clear()
##        screen2.bye()
    else:
        print("继续测算中!")
        


while flag==1:
    submit1()
    submit2()
    RouteOfTwoPlace(x,y)
    


    print(route)
    cat=[]
    a=b=c=d=e=f=g=h=i=j=k=l=m=n=0
    change2=""
    unfold=0
    while len(route):
        cat.append(route.pop(0))
        print(cat)
        control=1
        
        turtle.right(86)
        if len(cat)==2:
            if cat[0]>cat[1]:
                change2=cat[1]
                cat[1]=cat[0]
                cat[0]=change2
                unfold=1
            if cat[0]==1 and cat[1]==2:
                a=1
            if cat[0]==2 and cat[1]==4:
                b=1
            if cat[0]==1 and cat[1]==4:
                c=1
            if cat[0]==2  and cat[1]==3:
                d=1
            if cat[0]==3 and cat[1]==5:
                e=1
            if cat[0]==4 and cat[1]==5:
                f=1
            if cat[0]==4 and cat[1]==6:
                print("==========")
                g=1
            if cat[0]==1 and cat[1]==6:
                h=1
            if cat[0]==5 and cat[1]==6:
                i=1
            if cat[0]==5 and cat[1]==9:
                j=1
            if cat[0]==6 and cat[1]==7:
                k=1
            if cat[0]==7 and cat[1]==8:
                l=1
            if cat[0]==9 and cat[1]==10:
                m=1
            if cat[0]==8 and cat[1]==10:
                n=1
            cat.pop(0)
            if unfold==1:
                cat[0]=change2
            print(cat)
    print(a,b,c,d,e,f,g,h,i,j,k,l,m,n)

    ##turtle.left(31)
    turtle.reset()
    turtle.pensize(10)
    ChuFa(a)
    Place1(b)
    Place2(c)
    Place3(d)
    Place4(e)
    Place5(f)
    Place6(g)
    ChuFa_1(h)
    Place7(i)
    Place8(j)
    Place9(k)
    Place10(l)
    Place11(m)
    Place12(n)

    distance()
    

    submit3()

                

附件:Map.png

动态规划_可视化校园导航Floyd算法应用文章来源地址https://www.toymoban.com/news/detail-493872.html

到了这里,关于动态规划_可视化校园导航Floyd算法应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于 matplotlib 实现的基本排序算法的动态可视化项目源码,通过 pyaudio 增加音效,冒泡、选择、插入、快速等排序

    依托 matplotlib 实现的基本排序算法的动态可视化,并通过 pyaudio 增加音效。 安装 在使用之前请先检查本地是否存在以下库: matplotlib pyaudio fire requirements.txt 中包含了上述的库 使用 目前本项目仅提供了以下排序算法 冒泡排序 选择排序 插入排序 快排 归并排序 命令行工具 命

    2024年02月08日
    浏览(42)
  • 数字孪生智慧校园三维可视化管理系统解决方案

    随着科学技术的进步,人们对于生活的要求也越来越高。而教育也不例外。要想让学生受益于科学的进步,那么教育就必须要跟上时代的步伐。这就是“智慧校园”诞生的原因。 教育部等六部门于2021年7月印发的《关于推进教育新型基础设施建设构建高质量教育支撑体系的指

    2024年02月16日
    浏览(58)
  • 【可视化大屏开发】19. 加餐-百度地图API实现导航加线路热力图

    Web端使用场景中会涉及到地图导航路线情况,并利用热力图显示路况信息。 实现效果如下: 输入起始地点,选择并开始导航 最终效果 利用百度地图API显示地图交通拥堵情况的热力图,需要按照以下步骤进行开发 步骤1:注册并获取API密钥 访问百度地图开放平台,注册一个开

    2024年04月26日
    浏览(34)
  • 数据可视化 - 动态柱状图

    通过Bar构建基础柱状图 1. 通过Bar()构建一个柱状图对象 2. 和折线图一样,通过add_xaxis()和add_yaxis()添加x和y轴数据 3. 通过柱状图对象的:reversal_axis(),反转x和y轴 4. 通过label_opts=LabelOpts(position=\\\"right\\\")设置数值标签在右侧显示 Timeline()-时间线 柱状图描述的是分类数据,回答的是

    2024年02月15日
    浏览(43)
  • 基于Python的疫情数据可视化(matplotlib,pyecharts动态地图,大屏可视化)

    有任何学习问题可以加我微信交流哦!bmt1014 1、项目需求分析 1.1背景 2020年,新冠肺炎疫情在全球范围内爆发,给人们的健康和生命带来了严重威胁,不同国家和地区的疫情形势也引起了广泛的关注。疫情数据的监测和分析对疫情防控和科学防治至关重要。本报告以疫情数据

    2024年02月05日
    浏览(56)
  • 数字孪生城市3D可视化展示系统多维展示规划成果

    随着科技的不断进步和应用,越来越多的企业开始尝试基于3D可视化技术的智慧化管理,这项技术极大地提升了企业管理效率和优化企业决策,成为了现代企业管理不可或缺的一部分。 在传统的管理模式中,企业管理面临着固有的限制,这些限制包括时空上的限制,即无法实

    2024年02月11日
    浏览(54)
  • Excel 动态可视化图表分享

    AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0  54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战, ETL Informatica 数据仓库案例实战 Excel 2021实操 100集, Excel 2021函数大全 80集 Excel 2021高级图表应用89集, Excel 2021大屏可视化制作 56集

    2024年01月18日
    浏览(52)
  • 大数据系列 | 阿里云datav数据可视化(使用json文件生成可视化动态图标)

    简介 DataV 数据可视化是搭建每年天猫双十一作战大屏的幕后功臣,ECharts 是广受数据可视化从业者推崇的开源图表库。从今天开始,DataV 企业版接入了 ECharts 图表组件,当你使用 DataV 搭建可视化项目时,可以轻松地插入 ECharts,这意味着更丰富多样的图表效果,也让编程小白

    2024年02月12日
    浏览(58)
  • ChatGPT 随机动态可视化图表分析

    动态可视化图表分析实例如下图:    这样的动态可视化图表可以使用ChatGPT OpenAI 来实现。  给ChatGPT发送指令: 你现在是一个数据分析师,请使用HTML,JS,Echarts,来完成一个动态条形图,条形图方向横向,数据可以随机生成,并且随机生成10个不同的商品名称,每个类别分

    2024年02月11日
    浏览(40)
  • ChatGPT 实现动态地图可视化展示

    地图可视化分析有许多优点和好处: 1.直观理解: 地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率: 地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高

    2024年02月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包