2

在算法/数据结构中“查看正在发生的事情”的最佳方式是什么?如果它类似于二分搜索,我只是想象一堆盒子排成一排,每次都扔掉一半。有没有更强大的东西可以让我们理解像算法/数据结构这样抽象的东西?

澄清:我正在寻找更通用的东西。示例:为了可视化时间 - 有些人在头上使用时钟,但这很慢,而更自然的感觉是地球,如果您试图“感觉”算法的工作原理,您可以想象两个对象在那个地球上朝不同的方向移动。

4

3 回答 3

3

一般来说,动画非常适合可视化随时间发生的过程,例如算法的执行。

例如,查看这些动画:动画排序算法

这是一个动画,展示了数据结构如何在 MergeSort 上工作。

现在,您是否想花时间将您的算法与某种动画可视化联系起来是一个不同的问题!

于 2008-12-06T03:25:55.390 回答
2

算法动画在 1990 年代是一个很大的研究领域。当时在数字系统研究中心工作的 Marc H. Brown 做了很多有趣的工作。他的宙斯动画系统的源代码仍然可用,并且设置它并不难。几年前我和宙斯一起玩过,如果我没记错的话,它附带了几十个动画。

他们有几个“节日”,非专家聚集在一起为新算法制作动画。您可以看到1993 年电影节的一份报告(带有静止图像)。YouTube 有一个他们的视频Visualizing Combinatorial Structures

于 2008-12-06T03:47:14.023 回答
0

用另一种事物来描述事物称为类比。您只是将二进制搜索作为一堆框来完成的。只玩学生的先验知识。

例如,树可以被认为是具有多个“下一个”节点的链表,或者可以将它们解释为类似于层次结构的东西。

至于具体的解释方法,图形和状态机可以很容易地用 Graphviz 可视化。一个非常基本的有向图可以非常简单地表示:

digraph G {
   A->B;
   B->C;
   C->D;
   D->B;
}
于 2008-12-06T03:31:32.307 回答