使用 Javascript 的 Dijkstra 算法

使用 javascript 的 dijkstra 算法

该算法用于计算城市之间的最小最短距离。

连同所附文章,如果您想了解更多信息,我添加了另一个增强功能。

我计算了之前的路径,从那里我们可以得到它到达那里的完整路径。

const dijkstra = (graph) => {    const vertex = graph.length;    const path = new Array(vertex).fill(false);    const distance = new Array(vertex).fill(Infinity);    const prev = [-1];    distance[0] = 0; // source Node    const getMinDistanceIndex = (path, distance) => {        let min = Infinity;        let minIndex = -1;        for (let j = 0; j distance[j]) {                min = distance[j];                minIndex = j;            }            }            return minIndex;    }    for (let i = 0; i < vertex; i++) {        const minDistanceIndex = getMinDistanceIndex(path, distance);        path[minDistanceIndex] = true;        for (let j = 0; j 0 && distance[minDistanceIndex] + graph[minDistanceIndex][j] < distance[j]) {                distance[j] = distance[minDistanceIndex] + graph[minDistanceIndex][j];                prev[j] = minDistanceIndex;            }        }    }    console.log(path, distance, prev);}const graph = [ [ 0, 4, 0, 0, 0, 0, 0, 8, 0 ],              [ 4, 0, 8, 0, 0, 0, 0, 11, 0 ],              [ 0, 8, 0, 7, 0, 4, 0, 0, 2 ],              [ 0, 0, 7, 0, 9, 14, 0, 0, 0],              [ 0, 0, 0, 9, 0, 10, 0, 0, 0 ],              [ 0, 0, 4, 14, 10, 0, 2, 0, 0],              [ 0, 0, 0, 0, 0, 2, 0, 1, 6 ],              [ 8, 11, 0, 0, 0, 0, 1, 0, 7 ],              [ 0, 0, 2, 0, 0, 0, 6, 7, 0 ]];dijkstra(graph);/*[true, true, true, true, true, true, true, true, true][0, 4, 12, 19, 21, 11, 9,  8, 14][-1, 0, 1, 2, 5, 6, 7, 0, 2]*/

如果您有任何疑问,请随时联系我

参考
https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/

以上就是使用 Javascript 的 Dijkstra 算法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1490854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 13:29:40
下一篇 2025年12月8日 13:10:32

相关推荐

  • 迭代语句即for-of循环

    for-of: 在 es6 中引入 通常循环有计数器、检查条件、更新计数器。 for-of 循​​环没有这样的东西。continue-break 两者都可以搭配使用。旨在为我们提供当前元素。 fruits = [‘banana’,’apple’,’peach’,’orange’,’mango’,’g…

    2025年12月19日
    000
  • 使用这些顶级日志监控工具增强系统可靠性

    作为开发人员,跟踪应用程序的运行状况和性能非常重要。日志监控工具是此任务的重要组成部分,可帮助您及早发现问题并维护应用程序的可靠性。以下是一些可促进 DevOps 工作流程的顶级日志监控工具: 1.ELK堆栈(Elasticsearch、Logstash、Kibana) ? ELK Stack 是一…

    2025年12月19日
    000
  • 您可以为网站 URL 创建二维码

    您可以使用react-qr-code库为网站url“https://www.npmjs.com/package/react-qr-code”创建二维码。该库提供了一种在 react 应用程序中生成 qr 码的简单有效的方法。使用方法如下: 安装: 首先,在项目目录中运行以下命令来安装react-qr…

    2025年12月19日
    000
  • 在 React 中管理同一组件的多个实例中的状态

    当您使用 react 并拥有同一组件的多个实例时,管理状态可能会变得很棘手。根据组件需要交互的方式,您需要以不同的方式处理状态。这是我发现效果很好的方法。 独立实例:将状态保留在组件内部 如果您的组件不需要相互通信,最好将它们的状态保留在组件内。这样,每个实例都有自己的状态,其中一个实例的更改不会影…

    2025年12月19日
    000
  • 代码日:剪刀石头布 (RPS) 项目

    2024 年 8 月 21 日,星期三 不只是我觉得剪刀石头布(RPS)很棒。我在海军服役的时候有时也玩过RPS,我什至见过几个由RPS裁决的小型产权法庭案件。这个简单的游戏有着令人惊讶的应用范围! 对 RPS 项目的思考 Codecademy 的灵活性:我喜欢 Codecademy 的一件事是它允…

    2025年12月19日
    000
  • JavaScript 中的错误

    JavaScript 是全球数百万前端开发人员最喜爱的语言,但与任何工具一样,它也有其怪癖。 你有没有想过当你对 null 使用 typeof 运算符时会发生什么?嗯,这是 JavaScript 中最奇怪、最令人困惑的事情之一。 typeof 运算符可以很好地处理“Hello World”这样的文字…

    2025年12月19日
    000
  • 特里算法 ||使用 Javascript 自动完成功能

    介绍 trie,也称为前缀树,是一种专门的基于树的数据结构,用于高效的信息检索。 它对于涉及字符串内搜索和前缀匹配的用例特别有用。 如果我告诉你 trie 算法,你可能会对这个算法感兴趣,也可能不感兴趣 但是如果我告诉你你可以使用它创建一个自动完成算法。你会更兴奋地学习这个。 立即学习“Java免费…

    2025年12月19日
    000
  • 使用 JavaScript 的动态按钮 UI onclick

    第三天 #100daysofmiva 编码挑战已经过去三天了。 ??? 今天,我没有在后端做任何事情。我需要加强我的前端技能。我将使用 javascript 进行简单的按钮用户体验设计。您是否曾经在任何网站或应用程序上提交过表单,而不仅仅是等待响应,您可以看到这些精美的文本在您单击的按钮上发生变化。…

    2025年12月19日
    000
  • 掌握 React Router Hooks:综合指南

    react router 是在 react 应用程序中处理导航的重要库。随着 react router v6 中引入 hooks,管理路由变得更加直观和强大。在这篇博文中,我们将探索五个关键的 react router 钩子,它们可以提升你的路由游戏。 1. usenavigate():轻松编程导航…

    2025年12月19日
    000
  • **您需要了解的有关微服务的一切**

    微服务是一种软件架构,允许将应用程序开发为一组小型独立服务。每个微服务都专注于特定的功能,并且可以独立开发、部署和扩展。这种架构对于大型复杂的应用程序特别有用,因为它有利于维护和可扩展性。 什么是微服务?微服务是独立的软件组件,它们通过轻量级 API(通常使用 HTTP/REST)相互通信。与所有功…

    2025年12月19日 好文分享
    000
  • 如何使用 React Router DOM

    介绍 欢迎来到我们关于 react router dom 的深入教程!如果您是一名 ui 开发人员,希望通过动态路由功能增强 react 应用程序,那么您来对地方了。 react router dom 是一个功能强大的库,允许您创建具有多个视图的单页面应用程序,同时保持流畅、无缝的用户体验。 在这份…

    2025年12月19日
    000
  • 软件开发生命周期 (SDLC):综合指南

    软件开发生命周期 (SDLC) 是一个结构化过程,概述了创建软件应用程序所涉及的步骤。它为团队提供了一个可以遵循的框架,确保了系统且高效的开发方法。规划阶段规划阶段是 SDLC 的基础,在此阶段确定项目的目标、要求和可行性。此阶段涉及:• 项目启动:确定软件需求、定义项目范围并组建项目团队。• 需求…

    2025年12月19日
    000
  • JavaScript 中 for 循环的类型

    我们都知道并且喜欢经典的 for 循环,但是您知道 javascript 还有其他一些强大的 for 循环选项吗? 1) for/in:这个对于迭代对象的键和操作对象属性非常有用。 example:const obj = {name: “javascript”, type: “language”};…

    2025年12月19日
    000
  • 使用 Laravel 和 jQuery 实现无限滚动

    与传统分页相比,无限滚动提供了一种更现代、更流畅的数据加载方式。当用户向下滚动页面时,新数据会自动加载,而不是单击分页链接。 先决条件 laravel 和 jquery 的基础知识。具有分页模型的 laravel 项目(例如,用户)。 第 1 步:设置 laravel 进行分页 首先,设置控制器来处…

    2025年12月19日 好文分享
    000
  • 掌握 GitHub Webhook:综合指南

    GitHub Webhooks 提供了一种强大的方法来自动化工作流程并将 GitHub 与外部服务集成,根据存储库中的事件提供实时更新。无论您是想触发部署、发送通知还是跨平台同步数据,GitHub webhooks 都提供了灵活高效的解决方案。在本指南中,我们将探讨 GitHub Webhooks …

    2025年12月19日
    000
  • Leetcode #允许一个函数调用

    给定一个函数 fn,返回一个与原始函数相同的新函数,除了它确保 fn 最多被调用一次。 第一次调用返回的函数时,它应该返回与 fn 相同的结果。随后每次调用它时,它都应该返回未定义。 示例1: 输入: fn = (a,b,c) => (a + b + c), 调用 = [[1,2,3],[2,…

    2025年12月19日
    000
  • AJAX 调用的占位符函数

    我最近不得不创建一个没有后端端点的用户界面(ui)。重点是使 ui 尽可能具有响应性,以便用户可以知道操作何时正在进行。 这主要意味着当进行 ajax 调用时,ui 应进行指示,并在调用完成时进行相应更新。 为了帮助 ui 的开发,我创建了一个函数来模拟 ajax 调用。该功能能够: 接受延迟(以毫…

    2025年12月19日
    000
  • let、var 或 const 之间有什么区别?

    使用 var 关键字声明的变量的作用域为创建它们的函数,或者如果在任何函数外部创建,则为全局对象。 let 和 const 是块作用域的,这意味着它们只能在最近的一组花括号(函数、if-else 块或 for 循环)内访问。 function foo() { // all variables are…

    2025年12月19日
    000
  • 计算机科学中缓慢但持续努力的力量

    在快节奏的计算机科学世界中,缓慢但持续努力的价值常常被快速创新的诱惑所掩盖。然而,正是这种有条不紊的方法构成了该领域一些最杰出成就的基础。 *渐进式进步* 代码、设计和机器学习算法中的微小增量变化单独来看似乎微不足道,但随着时间的推移,累积起来,它们会带来实质性的进步。该策略使开发人员能够构建弹性系…

    2025年12月19日
    000
  • 如何避免请求无法访问的资源

    404 not found错误表示服务器无法找到所请求的资源。对于浏览器来说,这意味着该 url 无法识别。 404 请求会让用户感到沮丧,并可能导致网站性能不佳。此外,搜索引擎会抓取不存在的页面并将其编入索引,因此,网站的排名会受到负面影响。总而言之,我们可以通过一些方法来避免搜索无法访问的请求。…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信