我有一个表格
的矩阵a b 8.0
a d 0.1
......
其中第1列是节点A,第2节点B和第3相关系数 我必须创建一个找到阈值的程序,因此连接的网络具有巨型连接组件,占网络总节点的50-60%。 我写了一个程序,使用二进制搜索阈值,如
if Giant Connected Component > 60% new threshold=oldthreshold + oldthreshold/2
if Giant Connected Component < 50% new threshold=oldthreshold - oldthreshold/2
问题是算法还在搜索阈值&gt; 1和/或&lt; 0。我怎么能处理这个。或者有更好的想法如何计算它?
答案 0 :(得分:0)
您描述的算法不是二元搜索。
要正确实施二进制搜索,请跟踪两个值min_threshold
和max_threshold
。最初将这些设置为最小和最大可能的阈值。然后在每一步:
threshold = (min_threshold + max_threshold)/2
if GCC(threshold) > 60%: # threshold is too low, update minimum
min_threshold = threshold
else if GCC(threshold) < 50%: # threshold is too high, update maximum
max_threshold = threshold