VisuAlgo 是一个由新加坡国立大学计算机学院相关人员推动的数据结构与算法互动学习平台,最初由副教授 Steven Halim 于 2011 年构思,旨在帮助学生通过自学和互动方式理解数据结构与算法。平台将数组、排序、链表、树、图、最短路径、网络流、匹配、计算几何等内容制作成可操作的动画可视化,并配套在线测验系统。官网称,VisuAlgo 涵盖了《竞技编程》中讨论的许多高级算法,并且是可视化和动画化这些复杂算法的独家平台之一。
核心功能
数据结构可视化
平台提供数组、链表、二叉堆、哈希表、二叉搜索树、并查集、树状数组和线段树等数据结构模块。用户可以在对应页面中查看结构变化,并通过自定义输入观察操作过程;链表模块还提供了 /list 可视化页面,在大多数情况下不再自动重新布局,以加强对几乎所有链表操作 O(1) 印象的理解。
排序与基础算法动画
排序模块覆盖冒泡排序、选择排序、插入排序、归并排序、快速排序、随机快速排序、计数排序和基数排序。平台通过动画展示算法执行过程,用户可以在可视化页面中运行样本或自己的输入,而不局限于网站预置的示例数据。
图算法与图形绘制
图相关模块包括图结构、图遍历、最小生成树、单源最短路径、网络流和二分匹配。图结构、DFS/BFS、MST、SSSP、最大流量和匹配这 6 个可视化支持图形绘制功能,用户可以直接绘制图并进行测试;最小生成树模块包含 Prim 和 Kruskal,单源最短路径模块包含 Dijkstra 和 Bellman-Ford,网络流模块包含 Edmonds-Karp、Dinic 和 Ford-Fulkerson 等算法。
递归树与动态规划展示
用户可以将任何使用 JavaScript 编写的有效递归函数进行递归树可视化。如果存在重叠子问题和动态规划,平台也可以展示 DAG。官网提醒不要尝试使用巨大的递归树,因为这可能导致用户自己的 Web 浏览器或计算机崩溃。
在线测验与答案验证
每个可视化模块都包含自己的在线测验组件,平台配备问题生成器和答案验证器。题目会根据特定规则随机生成,学生提交答案后会自动评分;普通公众目前通过“培训模式”访问在线测验系统,而“测试模式”用于新加坡国立大学真实考试中的随机题目和自动验证。
多语言与多设备访问
VisuAlgo 已提供英语、中文和印尼语三个版本,并设有翻译统计页面。平台还推出了移动精简版本,使部分功能可以在智能手机屏幕上使用;可视化页面提供 1.0x 和 0.5x 两种比例,较小比例用于显示稍大的测试用例操作。
使用方式
VisuAlgo 通过网页访问,首页列出各个可视化模块及其训练入口,并提供打印页面。用户可以使用自己的输入运行算法,也可以在图相关模块中绘制图形。平台支持账户注册,全球计算机科学学生和教师可以创建账户;账户可保存布局模式、默认语言和播放速度等自定义设置。在线测验包含服务器端元素,普通公众通过培训模式使用,NUS 学生和获得相关权限的计算机科学讲师可使用相应账户功能。
适用人群与场景
数据结构和算法课程学生可以用它观察排序、树、图和路径算法的执行过程,并通过培训模式练习随机生成的问题。新加坡国立大学相关课程的学生可将其用于 CS1010、CS2040、CS3230、CS3233 和 CS4234 等课程。计算机科学教师可以在课堂中使用可视化模块和在线测验,全球其他好奇心用户也可以把它作为在线学习数据结构与算法的资源。需要在移动设备上学习的用户可以使用平台提供的移动精简版本,但部分功能可用范围有限。
定价
VisuAlgo 使用条款称,平台向全球计算机科学界提供免费服务。官网未列出分档价格或免费额度;全球用户可以创建 VisuAlgo 账户,在线测验和讲师功能则根据账户类型提供不同权限。
注意事项
官网建议使用最低分辨率为 1366×768 的屏幕,以获得复杂算法可视化所需的空间和交互体验。移动版本自 2022 年 4 月推出,但只能支持 VisuAlgo 的部分功能。在线测验具有重要的服务器端元素,保存服务器端脚本和数据库并不容易;普通公众目前只能通过培训模式访问。平台目前不允许他人分叉项目或创建 VisuAlgo 变体,但个人使用离线副本的客户端是可以接受的。