当前位置: 首页 > 面试题库 >

图形表示基准

谢鸿飞
2023-03-14
问题内容

当前正在开发一个程序,以解决(如果可能)尺寸从3X4到26x30的任何给定迷宫的问题。我用adj矩阵(稀疏)和adj列表来表示图。我想知道如何输出DFS使用一种方法然后使用另一种方法找到解决方案所花费的总时间。以编程方式,我怎么能产生这样的基准?


问题答案:

一个有用的表格,用于处理各种图形实现:

OPERATION               EDGE LIST      ADJ LIST             ADJ MATRIX

degree(v)                 O(m)         O(d(v))                O(n)
incidentEdges(v)          O(m)         O(d(v))                O(n)
areAdjacent(v1,v2)        O(m)         O(min(d(v1),d(v2))     O(1)
addVertex(v)              O(1)         O(1)                   O(n²)
addEdge(v)                O(1)         O(1)                   O(1)
removeVertex(v)           O(m)         O(m)                   O(n²)
removeEdge(e)             O(m)         O(d(v1)+d(v2))         O(1)

memory                    O(m+n)       O(m+n)                 O(n²)

其中,m是边数,n是顶点数,d(vertex)是顶点邻接表中的元素数。adj矩阵实现具有O(n²)添加和删​​除顶点的功能,因为您必须重新分配矩阵。

刚刚准备了这篇文章,这就是为什么我要准备它的原因:)

这与基准测试没有直接关系,因为通常您会研究最需要的操作并根据需要选择正确的实现,因此这是通过研究要实现的目标进行的一种“理论”基准测试。否则,您只需衡量代码在两个实现上完成全部工作所需的时间,然后进行比较即可。

编辑: 由于您使用稀疏矩阵实现,因此操作的复杂性可能会略有变化(大多数情况会更糟,因为您要以内存换取速度)。

EDIT2: 好的,现在我知道这是Java,它将非常简单:

long before = System.nanoTime();

/* execution of your algorithm */

long elapsed = System.nanoTime() - before;

答案以纳秒为单位,并且不能保证准确性,因此请小心使用此设备。进行多次运行的平均值(并检查方差低,丢弃与平均值相差较远的结果)将使您的结果具有连贯性。



 类似资料:
  • 图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。 不幸的是,如果要对GDI进行全面的讲述,将需要一

  • 问题内容: 我正在寻找一种以图形方式表示Django项目模型的方法。 有没有一种“本机”方式来进行这种ERD(图表)? 按照@Etienne说明进行更新 这是一个示例,说明了我如何最终查看代表django项目某些模型的PDF 它实际上与我的应用程序(app1,app2,…)一起生成点数据 将结果传递到dot以PDF格式输出 用打开输出 evince 问题答案: 如果要从Django模型中提取UML

  • 主要内容:src/runoob/graph/DenseGraph.java 文件代码:,src/runoob/graph/SparseGraph.java 文件代码:一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge)组成。 值得注意的是,图的顶点集合不能为空,但边的集合可以为空。图可能是无向的,这意味着图中的边在连接顶点时无

  • 图形与显示 [AGP] agp={off|try_unsupported} off 表示关闭内核的AGP(CONFIG_AGP)支持; try_unsupported 表示尝试驱动那些不受支持的芯片(可能会导致系统崩溃或数据错误) [HW,DRM] gamma=浮点数 设置显示器的Gamma值。 video.brightness_switch_enabled={0|1} [背景知识]如果ACPI

  • Highcharts 柱形图 以下实例演示了基本柱形图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 chart 配置 设置 chart 的 type 属性 为 column ,chart.type 描述了图表类型。默认值为 "line"。 var chart = { type: 'column' }; 实例 文件名:highch

  • Highcharts 条形图 以下实例演示了基本条形图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 chart 配置 设置 chart 的 type 属性 为 bar ,chart.type 描述了图表类型。默认值为 "line"。 var chart = { type: 'bar' }; 实例 文件名:highcharts_b