看的见的算法 7个经典应用诠释算法精髓
采用基础的Java语言,通过7款经典好玩的游戏,bobo老师带你进入不一样的算法世界,体验算法在实际开发中的应用,真正把算法用起来!
第1章 欢迎来到看得见的算法
欢迎来到看得见的算法。这个课程将以独一无二的方式,向你展示算法究竟有什么用,在实际项目中能做什么,并向你一一展示通过学习这个课程,你将能够制作出多么酷炫的程序:)
1-1 欢迎来到看得见的算法
1-2 学习这个课程将完成什么项目?
1-3 关于本课程的编程环境
1-4 更多学习本课程的注意事项
第2章 要想看得见,先要搞定GUI编程
在这一章,你将从0开始接触Java Swing编程,进入GUI的编程世界。通过这一章的学习,你将了解Java Swing最基本的用法。在这一章的最后,你将能够使用Java Swing制作简单额动画,并且能够使用键盘鼠标进行交互。
2-1 使用JFrame
2-2 创建属于自己的第一个JFrame子类
2-3 设置画布与图形绘制基础
2-4 使用Graphics2D
2-5 整理绘制工具类
2-6 高级绘制特性:抗锯齿和双缓存
2-7 动画基础
2-8 算法可视化中的MVC
2-9 键盘事件
2-10 鼠标事件
2-11 课程所使用的GUI编程模板
第3章 概率模拟算法
什么是蒙特卡洛算法?如果一个房间有100个人,每一时刻所有人都随机给另外的人一块钱,一定时间以后,房间里人们的财富分配是怎样的?怎么求解PI的近似值?著名的三门问题是怎么回事?游戏里的宝箱,有20的中奖率,打开5个宝箱就一定能中奖吗?对于这些问题,在这一章将统统给你答案!…
3-1 一个有意思的分钱模拟问题
3-2 深入随机分钱问题
3-3 蒙特卡洛算法
3-4 使用蒙特卡洛算法求PI值
3-5 不需要可视化的蒙特卡洛模拟
3-6 三门问题
3-7 你一定能中奖吗?
第4章 排序算法可视化
有没有见过网上酷炫的排序过程动画?在这一章,我们将带领你制作选择排序,插入排序,归并排序,快速排序和堆排序的动画。通过这些动画,我们将更深入的理解这些排序算法的优劣,以及相应的优化思路:)
4-1 选择排序算法可视化.
4-2 为可视化添加更多效果
4-3 插入排序可视化.
4-4 在近乎有序的数据上测试插入排序算法.
4-5 通过归并排序算法深入理解递归
4-6 归并排序算法可视化.
4-7 快速排序算法可视化
4-8 在快速排序中随机选取标定点
4-9 双路快速排序算法可视化
4-10 三路快速排序算法可视化
4-11 堆排序算法可视化
第5章 走迷宫
走迷宫是一个经典问题。这一章将针对这个经典问题进行详细分析,最终完成一个可视化的计算机自动在迷宫中寻找正确路径的动画应用。通过这个动画的制作,我们还将深入分析深度优先遍历和广度优先遍历,发现这二者之间最为重要的联系。…
5-1 处理迷宫文件
5-2 迷宫可视化
5-3 迷宫问题和图的遍历
5-4 深度优先递归走迷宫
5-5 迷宫问题与回溯法
5-6 非递归深度优先走迷宫
5-7 非递归深度优先走迷宫求解最终路径
5-8 广度优先走迷宫问题
5-9 深度优先遍历和广度优先遍历的内在联系
第6章 随机迷宫生成
RPG游戏中的迷宫都是如何随机生成的?在这一章,我们将探索一种随机迷宫的生成算法,并且完成一个从无到获得完整酷炫迷宫的动画过程。通过学习这个算法,我们也将领悟,如何在深入理解经典算法的基础上,改进算法,制作个性化的数据结构,来完成不一样的目标。 …
6-1 什么是迷宫
6-2 生成迷宫基础
6-3 深度优先遍历生成迷宫
6-4 非递归深度优先遍历生成迷宫
6-5 广度优先遍历生成迷宫
6-6 随机队列生成迷宫
6-7 迷宫生成的迷雾效果
6-8 生成随机性更强的迷宫
6-9 更多迷宫问题
第7章 自己做一个扫雷游戏
虽然游戏引擎越来越发达,但并非所有的游戏都能够通过拖拖拽拽来完成。扫雷就是一个例子。通过这章的学习,我们将探索制作扫雷这个游戏背后的算法,让大家认识到算法无处不在。即使是一个简单的扫雷,如果不会算法,还真实现不出来呢:)…
7-1 扫雷是什么鬼?扫雷里包含什么算法?
7-2 扫雷代码基础
7-3 随机生成雷区
7-4 验证随机生成雷区算法的随机性
7-5 Fisher-Yates洗牌算法的应用
7-6 为扫雷程序加入交互
7-7 扫雷与floodfill算法
7-8 更多扫雷相关和floodfill算法的应用
第8章 益智游戏自动生成解 – Move the Box
喜欢益智游戏,但是脑细胞不够用?让我们编程来自动求解一个益智游戏吧!通过这个过程,我们也将初步接触经典人工智能的核心思想――搜索。希望学完了本章课程,你不仅能够学会自动求解Move the Box这个游戏,还能够自己写出求解其他益智游戏的自动化算法。分分钟掌握黑科技!…
8-1 玩一玩Move the Box
8-2 求解Move the Box的数据架构
8-3 求解Move the Box的渲染
8-4 搜索框架
8-5 处理箱子掉落过程
8-6 处理箱子消除过程
8-7 显示问题的解
8-8 更多搜索优化思路
8-9 更多人工智能相关
第9章 分形图的绘制:计算机生成艺术
计算机算法不仅仅可以用于计算求解,还可以用于艺术领域!分形艺术便是其中之一。在这一章中,我们将学习形形色色的分形图的绘制方法,用代码生成绚丽的图案,帮助你实现艺术家的梦想!
9-1 分形到底是什么鬼
9-2 递归绘制基础
9-3 Vicsek 分形图的绘制
9-4 为分形绘制添加交互
9-5 Sierpinski 分形绘制
9-6 Sierpinski 三角形
9-7 Koch雪花分形背后的数学分析
9-8 编写Koch雪花分形
9-9 利用分形绘制树
第10章 看得见的算法,下季再见!
准备这个选题的时候,我列出了可以讲解的20余种应用,之后挑选了难度适中且具有代表性的7个形成了现在的课程。算法的用处其实还多着呢。