Algorithm 如何在连接元件标记算法i Fortran中存储等价物

Algorithm 如何在连接元件标记算法i Fortran中存储等价物,algorithm,fortran,fortran90,Algorithm,Fortran,Fortran90,我必须实现连接组件标记算法Fortran。我对如何扫描矩阵有一个清晰的想法,但是存储和恢复等价类呢?我想,在许多其他编程语言中,这是一项简单的任务,但我必须用Fortran来完成。我怎么做 第一次编辑:按照维基百科上关于的伪代码,我不知道如何使用Fortran 链接的[label]=union(链接的[label],L)下面是答案的一些片段。看起来您需要实现一个表示一组标签的数据结构。您必须做的第一个决定是决定如何为标签建模。我看到了3种明显的方法: 使用整数 使用长度为1(或2或任何您想要的

我必须实现连接组件标记算法Fortran。我对如何扫描矩阵有一个清晰的想法,但是存储和恢复等价类呢?我想,在许多其他编程语言中,这是一项简单的任务,但我必须用Fortran来完成。我怎么做

第一次编辑:按照维基百科上关于的伪代码,我不知道如何使用Fortran



链接的[label]=union(链接的[label],L)

下面是答案的一些片段。看起来您需要实现一个表示一组标签的数据结构。您必须做的第一个决定是决定如何为标签建模。我看到了3种明显的方法:

  • 使用整数
  • 使用长度为1(或2或任何您想要的)的字符变量
  • 定义一个类型,使其具有您想要的任何组件
  • 第二个决定是如何实现一组标签。我看到了3种明显的方法:

  • 使用标签数组(整数数组、字符数组(len=2)、类型数组(label),它们的大小在编译时是固定的。你必须相当确定你的硬线尺寸总是足够大。这不是一个很吸引人的方法;我可能不该提到这件事
  • 使用在运行时设置大小的标签数组。这意味着使用可分配数组。如果可能的话,您必须弄清楚如何在运行时将其设置为正确的大小
  • 实现表示一组标签的类型。例如,此类型可以将集合建模为链接列表。但这不是对集合建模的唯一方法,该类型可能会将标签集合建模为一个数组,并在需要时进行一些奇特的步法来重新调整数组的大小。当然,通过定义类型,您可以自由更改集合的内部表示,而无需修改使用集合类型公开的功能的代码
  • 根据您所做的选择,实现union函数向现有标签集添加新标签应该非常简单

    不过请注意,还有许多其他方法可以解决这个问题。例如,您可以从一组已定义的组件标签开始,然后从中删除不需要使用的标签

    由于您似乎是Fortran新手,下面列出了实现上述功能需要熟悉的语言特性

  • 您的编译器实现了多少Fortran 2003标准
  • 定义和使用派生类型
  • 可分配阵列、分配阵列、移动分配
  • 派生类型的数组
  • 类型绑定过程
  • 指针和目标

  • 下面是答案的一些片段。看起来您需要实现一个表示一组标签的数据结构。您必须做的第一个决定是决定如何为标签建模。我看到了3种明显的方法:

  • 使用整数
  • 使用长度为1(或2或任何您想要的)的字符变量
  • 定义一个类型,使其具有您想要的任何组件
  • 第二个决定是如何实现一组标签。我看到了3种明显的方法:

  • 使用标签数组(整数数组、字符数组(len=2)、类型数组(label),它们的大小在编译时是固定的。你必须相当确定你的硬线尺寸总是足够大。这不是一个很吸引人的方法;我可能不该提到这件事
  • 使用在运行时设置大小的标签数组。这意味着使用可分配数组。如果可能的话,您必须弄清楚如何在运行时将其设置为正确的大小
  • 实现表示一组标签的类型。例如,此类型可以将集合建模为链接列表。但这不是对集合建模的唯一方法,该类型可能会将标签集合建模为一个数组,并在需要时进行一些奇特的步法来重新调整数组的大小。当然,通过定义类型,您可以自由更改集合的内部表示,而无需修改使用集合类型公开的功能的代码
  • 根据您所做的选择,实现union函数向现有标签集添加新标签应该非常简单

    不过请注意,还有许多其他方法可以解决这个问题。例如,您可以从一组已定义的组件标签开始,然后从中删除不需要使用的标签

    由于您似乎是Fortran新手,下面列出了实现上述功能需要熟悉的语言特性

  • 您的编译器实现了多少Fortran 2003标准
  • 定义和使用派生类型
  • 可分配阵列、分配阵列、移动分配
  • 派生类型的数组
  • 类型绑定过程
  • 指针和目标

  • Fortran有它的优点和缺点(和所有编程语言一样),但我看不出为什么在许多其他编程语言中容易的任务在Fortran中应该是困难的任务。也许如果你发布一些伪代码,甚至(震惊,恐怖!)你正在开发的Fortran代码,我们可以提供帮助。这是一个非常广泛的问题。你能更具体一点你想知道什么吗?克里基,维基百科关于连接组件标签的文章甚至提供了一个伪代码,我几乎可以逐行翻译成Fortran。问题是什么?是的,我知道这是一个广泛的问题,但我只需要知道如何存储等价类。仍然没有任何代码,因为我不知道如何完成主要任务,但是,我可以用很多细节暴露我的问题。@High-Performance Mark