如何构建自相似二叉结构化树?

计算科学 算法
2021-12-17 02:20:27

如果这个问题看起来微不足道或不是很有趣,请原谅我,但我最近很难说服其他人我的算法用于构建自相似二叉结构化树(在此处阅读更多信息:https ://doi.org /10.1002/cnm.3229)是正确的。因此,算法总结为以下 4 个步骤:

  1. 的根和阈值半径rrootrthreshold
  2. 缩放父半径(并将子半径定义为:rpαβ

rleft=αrp

rright=βrp

  1. 来自马等。人。论文(https://doi.org/10.1002/cnm.3229):

    如果当前血管的半径小于 ,则分叉过程停止,并将其设置为终端分支。rthreshold

我的问题是,根据我的理解,上面的算法是这样工作的:

  • 当我站在并想决定是否应该分叉时,我根据上述过程中的步骤 2rprleftrright
  • 然后我将进行比较,如果它们大于,我插入左右节点在我的结构化树中。rleftrrightrthresholdrthreshold

但是我与其他人进行了长时间的讨论,他们认为我只需要比较而不是并在当前船只作者的原始论文的目的据我了解,这没有意义,因为在此处引用的原始论文 ( https://doi.org/10.1002/cnm.3229 ) 中,作者计算在第 2 步,然后决定是否分叉,但如果他们想仅根据rprthresholdrleftrrightrprleftrrightrp那么为什么即使是第 2 步也会导致在这种情况下我们不需要来决定是否分叉。任何想法或建议在这里表示赞赏。rleftrright

1个回答

另一个人的论点在我看来就像是对你的算法的重组。它会产生稍微不同的结果,但最终达到相同的目标。让我用一个半径为 1 的父节点、半径为 (alpha=)0.3 和 (beta=)0.7 的两个子节点的简单树来演示,阈值为 0.5。

你的建议会产生下面的树

     1
Null_|_0.7
   Null_|_Null

他们的建议会产生一棵略有不同的树

                 1
      0.3________|________0.7
  Null_|_Null      0.21____|____0.49
               Null_|_Null  Null_|_Null

我之所以这样说是Null因为我不确定您如何处理数据结构,也许您根本不创建叶子。在那种情况下,可视化会有所不同。

要点是第一棵树是第二棵树的子树。因此,这成为一个哲学问题。哪一棵树更好地描述了这种现象?我认为您的解释是正确的,因为我不同意创造低于规定阈值的孩子,因为他们将无法生存。但是“低于阈值的父母不能产生后代”的论点同样有效。

你拉的引文

如果当前血管的半径小于阈值,则分叉过程停止,并将其设置为终端分支。

似乎同意第二种解释,例如“低于阈值的父母不能生育后代”。

看看算法,他们肯定会在谈论停止标准之前计算孩子的半径。这可能是糟糕的写作,但绝对支持你的解释。

问题是如果不访问他们的代码,我们无法知道他们在研究中实际做了什么,而且他们似乎也没有提供代码。您对联系他们并索取他们的一些代码有何感想?根据我的经验,许多研究人员都乐于分享他们的代码——除非它是专有的或编写不佳的研究软件,例如无法治愈的学术界瘟疫——因为这是一种获得曝光的方式。