AlgorithmVisualizer项目改进与部署-网页算法可视化

AlgorithmVisualizer 项目介绍

AlgorithmVisualizer 是一个开源的可视化平台,用于动态地展示各种计算机算法的执行过程,帮助用户更好地理解算法的内部机制和运行逻辑。这个项目非常适合学生、编程初学者或任何想更直观地理解算法如何工作的开发者。

🔍 项目简介:


🚀 主要特点:

  1. 多种算法支持
    • 排序算法(如冒泡排序、快速排序、归并排序)
    • 搜索算法(如二分查找、线性查找)
    • 路径搜索算法(如 A*、Dijkstra、BFS、DFS)
    • 数据结构操作(如栈、队列、树)
  2. 可交互式界面
    • 动画效果直观展示每一步操作
    • 用户可以自定义输入数据
    • 可调节执行速度
  3. 多语言支持
    • 后端支持 JavaScript、C++、Java 等
    • 可用的语言可拓展,适合教学和实验
  4. Web 端运行
    • 前端基于 React 构建,用户无需安装任何客户端程序
    • 可直接在浏览器中运行和查看动画效果
  5. 对于编程教育:
    • 直观展示抽象算法逻辑
    • 提高学习兴趣和效率
    • 帮助调试和理解复杂问题的解决过程

官方部署方案

前端:NodeJs-v12.22.12+React

复制代码
git clone https://github.com/algorithm-visualizer/algorithm-visualizer.git
npm install
npm start

后端:NodeIs-v12.22.12+Express+Docker+AWS 服务+Linux

后端需要用到Linux系统和Docker,部署方案可以参考:

https://blog.csdn.net/weixin_64094522/article/details/148370954

本文不推荐官方部署方案,因为Docker镜像被封杀的太厉害了,没有科学上网的不用试了。

复制代码
git clone https://github.com/algorithm-visualizer/server.git
npm install
sudo npm run watch

可视化原理

前端(Js动画库)--Json指令--后端(多种语言运行环境),下面的内容就是指令。

json 复制代码
[
    {
        "args": ["20x20 Maze"], 
        "key": "4nif5m6s", 
        "method": "Array2DTracer"}, 
    {
        "args": ["Path Steps"], 
        "key": "m96ejo6t", 
        "method": "LogTracer"
    }, 
    {
        "args": [["4nif5m6s", "m96ejo6t"]], 
        "key": "g3swasyg", 
        "method": "VerticalLayout"}, 
    {
        "args": ["g3swasyg"], 
     	"key": null, 
     	"method": "setRoot"
    }
]

Python追踪器实现

​ 官方似乎没有完成Python版本的追踪器,由于博主喜欢使用Python,于是用ChatGPT辅助完成了该追踪器,经过测试,完美复现了该有的功能。

项目地址:https://github.com/HHP999/algorithm-visualizer-Python-Tracers

改进部署方案

​ 可以关注:https://gitee.com/xcbnh/line-code-view,目前由于参考需要暂未公开,感兴趣的可以联系我。

前端微调参数,减小了图像缩放幅度,添加了Python接口。

​ 后端统一本地部署语言环境,不再使用Docker和AWS远程服务方案。所有的部署环境使用了Piston项目的语言包:https://github.com/engineer-man/piston/releases/tag/pkgs,后端源码也相应的做了修改,主要添加了Python的API,同时统一使用调用脚本的方式运行各类语言。

​ 本文以Python为例,下载https://github.com/engineer-man/piston/releases/tag/pkgs里的Python语言包,解压放到一个目录下,将bin目录暴露到环境变量,目的是为了让系统直接找到Python3解释器,步骤自行解决。下载我的Python追踪器,复制algorithm_visualizer文件夹到python\\3.10.0\\lib\\python3.10\\site-packages的安装包目录,目的是直接让用户提交的Python代码可以自动识别包里的模块,当然有其他方法自行研究(博主懒)。配置一个shell脚本传入Python文件并运行该文件,最终会生成一个json文件,内部包含了指令内容。后端API触发时会调用该脚本执行。

参考考脚本:

复制代码
#!/bin/bash

# 设置默认路径(如果没有设置环境变量)
source "/Programs/CodeEnvs/environment"

export PATH=$CodeEnvPackagesPath/python/3.10.0/bin:$PATH

echo "Using Python at: $(which python3.10)"

script_path="$1"

if [[ ! -f "$script_path" ]]; then
  echo "Error: script file '$script_path' does not exist."
  exit 1
fi

python3.10 "$script_path"

rm "$script_path"
相关推荐
来自天蝎座的孙孙11 分钟前
洛谷P1595讲解(加强版)+错排讲解
python·算法
GawynKing31 分钟前
图论(5)最小生成树算法
算法·图论·最小生成树
试剂界的爱马仕36 分钟前
胶质母细胞瘤对化疗的敏感性由磷脂酰肌醇3-激酶β选择性调控
人工智能·科技·算法·机器学习·ai写作
打不了嗝 ᥬ᭄1 小时前
Linux 信号
linux·开发语言·c++·算法
张子夜 iiii1 小时前
机器学习算法系列专栏:主成分分析(PCA)降维算法(初学者)
人工智能·python·算法·机器学习
一匹电信狗1 小时前
【C++】异常详解(万字解读)
服务器·c++·算法·leetcode·小程序·stl·visual studio
sp422 小时前
白话 LRU 缓存及链表的数据结构讲解(二)
算法
PineappleCoder2 小时前
为什么说发布 - 订阅是代码的 “万能胶水”?解耦逻辑全解析
前端·javascript·算法
墨染点香2 小时前
LeetCode 刷题【43. 字符串相乘】
算法·leetcode·职场和发展
weixin_307779132 小时前
VS Code配置MinGW64编译Ipopt库
开发语言·c++·vscode·算法