可视化抽象概念(算法/数据结构)的最佳方法是什么?

时间:2008-12-06 03:19:25

标签: visualization abstraction

在算法/数据结构中“看到正在发生的事情”的最佳方法是什么?如果它像二进制搜索一样,我只想象连续一堆的盒子,每次扔掉一半。是否有更强大的功能可以让我们像算法/数据结构一样抽象出来?

澄清:我正在寻找更通用的东西。示例:为了使时间可视化 - 有些人在头部使用时钟但速度慢,而更自然的感觉是地球仪,如果您想要了解算法如何工作,您可以想象两个对象在那个地球上向不同的方向移动。

3 个答案:

答案 0 :(得分:3)

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

例如,请查看以下动画:Animated Sort Algorthms

Here's an animation显示数据结构如何在MergeSort上运行。

现在,您是否想花时间将算法连接到某种动画可视化是一个不同的问题!

答案 1 :(得分:2)

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

他们有几个'节日',非专家聚在一起为新算法制作动画。您可以在1993 festival上看到其中一个报告(带有静止图像)。 YouTube有一个视频Visualizing Combinatorial Structures

答案 2 :(得分:0)

用另一种东西来描述某些东西叫做类比。你刚刚用二进制搜索做了一堆盒子。只是玩学生的先前知识。

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

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

digraph G {
   A->B;
   B->C;
   C->D;
   D->B;
}