如何解决Iris Builder生成的GCS非全连接问题?
关于Iris Builder构建GCS时断开区域的高效桥接方法提问
我使用Iris Builder和部分种子状态创建广义构型空间(GCS)时,有时会得到非全连接的图。我当前的解决方案是找出断开的节点,为每个断开节点遍历图中已连接部分的节点,计算该节点与已连接节点中心的几何均值,将其作为下一区域的种子,重复此过程直至图全连接:
def bridge(self): max_bridge_per_region = 3 disconnected_regions = set() give_up_regions = set() while disconnected_regions != ( disconnected_regions := (set(self._get_disconnected_regions()) - give_up_regions)): log.info(f"disconnnected regions are {len(disconnected_regions)} many") if not disconnected_regions: log.info(f"bridging is done, had to give up on {give_up_regions}") return region = list(disconnected_regions)[0] connected_regions = set(self.iris_regions.values()) - (disconnected_regions | give_up_regions) bridge_count = 0 for cr in connected_regions: region_q_sample = region.MaybeGetFeasiblePoint() cr_q_sample = cr.MaybeGetFeasiblePoint() bridge_seed = np.mean([region_q_sample, cr_q_sample], axis=0) Log.info(f"bridge seed is {bridge_seed}") try: self.GenerateRegion(f"bridge_{uuid.uuid4().hex}", bridge_seed) bridge_count += 1 if bridge_count > max_bridge_per_region: break except Exception as e: log.error(f"error in generate: {e}") continue if bridge_count == 0: log.info(f"giving up on region {region}") give_up_regions.add(region)
这种朴素方法虽能生效,但速度极慢!请问是否有更标准的方法,可在现有区域无交集导致图断开时创建这类“桥接”区域?
内容的提问来源于stack exchange,提问作者frouhi
相关产品推荐
相关产品推荐

