通过动画可视化数据结构和算法 - VisuAlgo
VisuAlgo.net/en
通过动画可视化数据结构和算法
Featured story: Visualizing Algorithms with a Click
VisuAlgo project continues to be funded by Optiver (started mid 2023, to continue to mid 2025 and possibly beyond).The focus this AY24/25 is to make VisuAlgo much more mobile-friendly and to improve the online quiz capabilities.
VisuAlgo 是一个三语网站。尝试访问 VisuAlgo 的其他版本,例如 中文版 或 印尼语版。用户可以查看这三个页面的翻译统计。我们的目标是使所有三个版本的翻译率都接近 100%。遗憾的是,其他语言的翻译进度远远落后,因此它们会被重定向到英语。
在 VisuAlgo 中,你可以为任何算法使用 你自己的输入,而不仅仅是使用提供的示例输入。这是 VisuAlgo 的一个关键特性。在以下 9 个与图相关的可视化中尝试图绘制功能:Graph DS, DFS/BFS, MST, SSSP, Max Flow, Matching, MVC, Steiner Tree, 和 TSP。你也可以在这些 9 个与图相关的可视化框中点击标签 'graph',或者在搜索框中输入 'graph'。
以下是一些较新的可视化功能:能够显示两个可视化比例(1.0x 和 0.5x),缩小比例用于显示稍微大一些的测试用例的操作,/list (链表不再自动重新布局,在大多数情况下,为了强化几乎所有链表操作的 O(1) 印象)。
最新消息 [Fri, 09 Jun 23]: VisuAlgo 项目从今天开始由 Optiver 资助。我们现在向全球所有计算机科学专业的学生/教师开放 VisuAlgo 帐户注册。转到 登录页面,然后按照屏幕上的说明创建一个新的 VisuAlgo 帐户(不再限于与“nus.edu”相关的电子邮件)。
要比较 2 个相关的算法,例如在同一个图上比较 Kruskal's vs Prim's,或者比较同一数据结构的 2 个相关操作,例如将 Binary (Max) Heap 可视化为二叉树或紧凑数组,请在 2 个窗口中打开 2 个 VisuAlgo 页面并将它们并排放置。单击 此处 查看屏幕截图。只要你想比较两个相似的数据结构或算法,就可以随时使用这种并排技术。
你可以可视化 任何 有效的 递归函数 的递归树(或 DAG,如果存在重叠的子问题并且动态规划 (DP) 适用),该函数可以用 JavaScript 编写。点击 此处 查看屏幕截图。显然,不要尝试可视化具有巨大递归树的递归,因为这样做会导致你的网络浏览器/计算机崩溃。
VisuAlgo 对于首次访问者加载速度很快(我们使用 Cloudflare 全球 CDN),但对于回头客来说加载速度“几乎是即时的”,因为我们还缓存了 VisuAlgo 的大量静态内容 :)。因此,不要使用隐身或私人浏览模式来保留缓存。此外,对于拥有 VisuAlgo 帐户的 NUS 学生,在你 登录 后,我们将根据你的偏好/课程设置加载 VisuAlgo。
每个可视化页面都有一个“e-Lecture Mode”,可以从该页面的右上角访问。此模式会自动显示给首次(或未登录)访问者,以展示正在可视化的数据结构或算法。许多可视化页面的 e-Lecture mode 质量已达到新加坡国立大学算法课程的讲座标准 :)。
请查看 VisuAlgo 的最新功能:1). NUS 学生和全球经过验证的 CS 讲师的用户帐户系统(并阅读右下角最新的隐私政策弹出窗口),2). 更适合移动设备的设置,3). 更完善的 e-Lecture 笔记,以达到“NUS 标准”,以及 4). 三语功能 (/en, /zh, 或 /id)。
VisuAlgo 有两个主要组成部分:24 个可视化页面及其相关的 Online Quiz 组件(目前正在向题库中添加更多问题)。我们没有为 Online Quiz 编写任何问题脚本 :O,所有答案都将几乎立即被评分 :)。你可以通过单击可视化模块上的“Training”按钮来使用此在线测验系统。
首选布局:Default View CS1010 or equivalent IT5003 CS2040 or equivalent CS3230 CS3233 CS4234
-
Click to View Array Training ✍ cs1010 it5003 cs2040 cs3230 cs3233
-
Click to View Sorting Training ✍ array algorithm bubble select insert selection insertion merge quick randomized quick counting radix sort cs1010 it5003 cs2040 cs3230 list data structure sorting
-
Click to View Bitmask Training ✍ bit manipulation set cs3233 array list ds data structure bitmask
-
Click to View Linked List Training ✍ stack queue doubly deque it5003 cs2040 array ds data structure linked
-
Click to View Binary Heap Training ✍ priority queue recursive it5003 cs2040 recursion ds data structure binary heap
-
Click to View Hash Table Training ✍ open addressing linear quadratic probing it5003 cs2040 ds data structure
-
Click to View Binary Search Tree Training ✍ adelson velskii landis set table avl it5003 cs2040 recursion recursive ds data structure set bst binary search tree priority queue
-
Click to View Graph Structures Training ✍ tree complete bipartite dag it5003 cs2040 graph ds data structure
-
Click to View Union-Find DS Training ✍ path compression disjoint set data structure union by rank cs2040 cs3233 array tree find ds
-
Click to View Fenwick Tree Training ✍ binary indexed tree bit dynamic fenwick range sum point update cs3233 binary ds data structure
-
Click to View Segment Tree Training ✍ dynamic range sum min max cs3233 segment tree ds data structure
-
Click to View Recursion Tree/DAG Training ✍ dynamic programming dp generic cs1010 it5003 cs2040 cs3233 cs4234 recursive algorithm recursion tree dag
-
Click to View Graph Traversal Training ✍ bfs dfs it5003 cs2040 bipartite scc cut vertex articulation point bridge cs2020 graph algorithm
-
Click to View Min Spanning Tree Training ✍ mst prim kruskal graph min spanning cs2040 tree algorithm
-
Click to View SS Shortest Paths Training ✍ sssp single-source bfs dijkstra bellman ford it5003 cs2040 single source shortest path graph algorithm
-
Click to View Cycle Finding Training ✍ floyd tortoise-hare math cs3233 algorithm
-
Click to View Suffix Tree Training ✍ string matching lrs lcs cs3233 suffix tree ds data structure
-
Click to View Suffix Array Training ✍ lcp cs3233 matching lrs lcs suffix array string ds data structure
-
Click to View Geometry (Polygon) Training ✍ convex cut winding concave cs3233 computational geometry algorithm
-
Click to View Convex Hull Training ✍ andrew monotone chain graham scan jarvis march cs3233 computational geometry algorithm
-
Click to View Network Flow Training ✍ max flow edmonds karp min cut dinic ford fulkerson graph cs3233 cs4234 algorithm
-
Click to View Graph Matching Training ✍ augmenting path bipartite graph cs3233 cs4234 matching algorithm
-
Click to View Min Vertex Cover Training ✍ np-hard graph bipartite tree tree dp bipartite matching max flow cs3233 cs4234
-
Click to View Steiner Tree Training ✍ np-hard graph mst cs4234
-
Click to View Traveling Salesperson Problem Training ✍ np-hard graph dp mst cs3233 cs4234
-
Click to View NP-complete Reductions ✍ cs3230 cs4234
重新加载屏幕或旋转设备以获得适合你设备方向的路径
关于
最初由 Steven Halim 副教授于 2011 年构思,VisuAlgo 旨在通过提供一个自定进度的交互式学习平台,帮助他的学生更深入地理解数据结构和算法。
VisuAlgo 拥有 Dr. Steven Halim 的著作“Competitive Programming”(与 Felix Halim 博士和 Suhendry Effendy 博士合著)中讨论的众多高级算法,即使在十年后,它仍然是可视化和动画化其中几种复杂算法的独家平台。
虽然 VisuAlgo 主要面向新加坡国立大学 (NUS) 注册参加各种数据结构和算法课程的学生(例如,CS1010/equivalent、CS2040/equivalent(包括 IT5003)、CS3230、CS3233 和 CS4234),但它也为全球有求知欲的人们提供了一个宝贵的资源,促进在线学习。
最初,VisuAlgo 并非为智能手机等小型触摸屏设计,因为复杂的算法可视化需要大量的像素空间和点击拖动交互。为了获得最佳的用户体验,建议的最小屏幕分辨率为 1366x768。但是,自 2022 年 4 月以来,VisuAlgo 的移动(轻量级)版本已推出,使得在智能手机屏幕上使用 VisuAlgo 的一部分功能成为可能。
VisuAlgo 仍然是一个正在进行中的项目,更多复杂的可视化正在不断开发中。目前,该平台具有 24 个可视化模块。
VisuAlgo 配备了内置的问题生成器和答案验证器,其“在线测验系统”使学生能够测试他们对基本数据结构和算法的知识。问题根据特定规则随机生成,并且学生的答案在提交到我们的评分服务器后会自动评分。随着越来越多的 CS 讲师在全球范围内采用此在线测验系统,它可以有效地消除许多大学标准计算机科学考试中的手动基本数据结构和算法问题。通过分配一个小的(但非零)权重来通过在线测验,CS 讲师可以显着提高学生对这些基本概念的掌握程度,因为他们可以访问几乎无限数量的练习题,这些练习题可以在参加在线测验之前立即验证。每个 VisuAlgo 可视化模块现在都包含其自己的在线测验组件。
VisuAlgo 已被翻译成三种主要语言:英语、中文和印度尼西亚语。此外,我们还用各种语言编写了关于 VisuAlgo 的公共笔记,包括印度尼西亚语、韩语、越南语和泰语: id, kr, vn, th.
团队
项目负责人 & 顾问 (2011年7月-至今) Associate Professor Steven Halim, School of Computing (SoC), National University of Singapore (NUS) Dr Felix Halim, Senior Software Engineer, Google (Mountain View)
本科生研究员 1 CDTL TEG 1: 2011年7月-2012年4月 : Koh Zi Chun, Victor Loh Bo Huai 毕业设计/UROP 学生 1 2012年7月-2013年12月 : Phan Thi Quynh Trang, Peter Phandi, Albert Millardo Tjindradinata, Nguyen Hoang Duy 2013年6月-2014年4月 Rose Marie Tan Zhao Yun, Ivan Reinaldo 本科生研究员 2 CDTL TEG 2: 2014年5月-2014年7月 : Jonathan Irvin Gunawan, Nathan Azaria, Ian Leow Tze Wei, Nguyen Viet Dung, Nguyen Khac Tung, Steven Kester Yuwono, Cao Shengze, Mohan Jishnu 毕业设计/UROP 学生 2 2014年6月-2015年4月 : Erin Teo Yi Ling, Wang Zi 2016年6月-2017年12月 : Truong Ngoc Khanh, John Kevin Tjahjadi, Gabriella Michelle, Muhammad Rais Fathin Mudzakir 2021年8月-2023年4月 : Liu Guangyuan, Manas Vegi, Sha Long, Vuong Hoang Long, Ting Xiao, Lim Dewen Aloysius 本科生研究员 3 Optiver: 2023年8月-2023年10月 : Bui Hong Duc, Oleh Naver, Tay Ngan Lin 毕业设计/UROP 学生 3 2023年8月-2024年4月 : Xiong Jingya, Radian Krisno, Ng Wee Han, Tan Chee Heng 2024年8月-2025年4月 : Edbert Geraldy Cangdinata, Huang Xing Chen, Nicholas Patrick
可以在 statistics 页面找到贡献了 ≥ 100 个翻译的翻译人员列表。
致谢 NUS CDTL 提供了 Teaching Enhancement Grant 来启动这个项目。
对于 2023/24 学年,来自 Optiver 的慷慨捐赠将用于进一步开发 VisuAlgo。
使用条款
VisuAlgo 慷慨地免费提供给全球计算机科学界。如果你喜欢 VisuAlgo,我们恳请你向其他计算机科学专业的学生和讲师宣传它的存在。你可以通过社交媒体平台(例如,Facebook、YouTube、Instagram、TikTok、Twitter 等)、课程网页、博客评论、电子邮件等分享 VisuAlgo。
欢迎数据结构和算法 (DSA) 的学生和讲师直接使用此网站进行课堂教学。如果你从此站点捕获屏幕截图或视频,请随意在其他地方使用它们,前提是你引用此网站的 URL (https://visualgo.net) 和/或下面的出版物列表作为参考。但是,请不要下载 VisuAlgo 的客户端文件并将其托管在你的网站上,因为这构成了剽窃。目前,我们不允许其他人 fork 此项目或创建 VisuAlgo 变体。允许个人使用客户端 VisuAlgo 的脱机副本。
请注意,VisuAlgo 的在线测验组件具有大量的服务器端元素,并且不易在本地保存服务器端脚本和数据库。目前,公众只能通过“training mode”访问在线测验系统。“test mode”提供了一个更可控的环境,用于在 NUS 的真实考试中使用随机生成的问题和自动验证。
出版物列表
这项工作已在 2012 年 ICPC 世界总决赛(波兰华沙)的 CLI Workshop 和 2012 年 IOI 会议(意大利西尔米奥内-蒙蒂基亚里)上发表。你可以点击此链接阅读我们 2012 年关于该系统的论文(当时它还未被称为 VisuAlgo),此链接阅读 2015 年的简短更新(以将 VisuAlgo 名称与之前的项目联系起来)。
Bug 报告或新功能请求
VisuAlgo 不是一个已完成的项目。 Steven Halim 副教授仍在积极改进 VisuAlgo。如果你正在使用 VisuAlgo 并且在我们的任何可视化页面/在线测验工具中发现 bug,或者你想请求新功能,请联系 Steven Halim 副教授。 他的联系方式是他姓名和 gmail dot com 的组合。
隐私政策
1.2 版(2023 年 8 月 18 日星期五更新)。
自 2023 年 8 月 18 日星期五以来,我们不再使用 Google Analytics。因此,我们现在使用的所有 cookie 仅用于本网站的运营。即使对于首次访问者,烦人的 cookie 同意弹出窗口现在也已关闭。
自 2023 年 6 月 7 日星期五以来,感谢 Optiver 的慷慨捐赠,世界上任何人都可以自行创建一个 VisuAlgo 帐户来存储一些自定义设置(例如,布局模式、默认语言、播放速度等)。
此外,对于 NUS 学生,通过使用 VisuAlgo 帐户(NUS 官方电子邮件地址、班级名单中的学生姓名以及在服务器端加密的密码的元组——不存储其他个人数据),你同意你的课程讲师跟踪你的 e-lecture 幻灯片阅读和在线测验培训进度,这是顺利运行课程所必需的。你的 VisuAlgo 帐户也需要用于参加 NUS 官方 VisuAlgo Online Quizzes,因此将你的帐户凭据传递给另一个人代表你进行 Online Quiz 构成学术违规行为。你的用户帐户将在课程结束后清除,除非你选择保留你的帐户(选择加入)。访问完整的 VisuAlgo 数据库(带有加密密码)仅限于 Prof Halim 本人。
对于已写信给 Steven 的全球其他 CS 讲师,需要一个 VisuAlgo 帐户(你的(非 NUS)电子邮件地址,你可以使用任何显示名称和加密密码)来区分你的在线凭据与世界其他地方。你的帐户将具有 CS 讲师的特定功能,即能够查看隐藏的幻灯片,其中包含前面幻灯片中提出的问题的(有趣的)答案。你还可以访问 VisuAlgo Online Quizzes 的 Hard 设置。你可以自由地使用这些材料来增强你的数据结构和算法课程。请注意,将来可能会有其他 CS 讲师的特定功能。
对于任何拥有 VisuAlgo 帐户的人,如果你不再希望与 VisuAlgo 工具关联,你可以自行删除你的帐户。