在算法/数据结构中“查看正在发生的事情”的最佳方式是什么?如果它类似于二分搜索,我只是想象一堆盒子排成一排,每次都扔掉一半。有没有更强大的东西可以让我们理解像算法/数据结构这样抽象的东西?
澄清:我正在寻找更通用的东西。示例:为了可视化时间 - 有些人在头上使用时钟,但这很慢,而更自然的感觉是地球,如果您试图“感觉”算法的工作原理,您可以想象两个对象在那个地球上朝不同的方向移动。
在算法/数据结构中“查看正在发生的事情”的最佳方式是什么?如果它类似于二分搜索,我只是想象一堆盒子排成一排,每次都扔掉一半。有没有更强大的东西可以让我们理解像算法/数据结构这样抽象的东西?
澄清:我正在寻找更通用的东西。示例:为了可视化时间 - 有些人在头上使用时钟,但这很慢,而更自然的感觉是地球,如果您试图“感觉”算法的工作原理,您可以想象两个对象在那个地球上朝不同的方向移动。
算法动画在 1990 年代是一个很大的研究领域。当时在数字系统研究中心工作的 Marc H. Brown 做了很多有趣的工作。他的宙斯动画系统的源代码仍然可用,并且设置它并不难。几年前我和宙斯一起玩过,如果我没记错的话,它附带了几十个动画。
他们有几个“节日”,非专家聚集在一起为新算法制作动画。您可以看到1993 年电影节的一份报告(带有静止图像)。YouTube 有一个他们的视频Visualizing Combinatorial Structures。
用另一种事物来描述事物称为类比。您只是将二进制搜索作为一堆框来完成的。只玩学生的先验知识。
例如,树可以被认为是具有多个“下一个”节点的链表,或者可以将它们解释为类似于层次结构的东西。
至于具体的解释方法,图形和状态机可以很容易地用 Graphviz 可视化。一个非常基本的有向图可以非常简单地表示:
digraph G {
A->B;
B->C;
C->D;
D->B;
}