首页 > 其他分享 >UDTW&Textiling 一些记录

UDTW&Textiling 一些记录

时间:2023-06-29 10:32:46浏览次数:32  
标签:路径 记录 SP 向搜索 搜索算法 part Textiling 未分 UDTW


一、        Algorithm

Step 1:定义Synchronous Point

我用的是diagonal bands。对每个SP,置M[SP] =1。

Step 2:对每一个SP或possible path运用前向搜索算法

前向搜索算法:判断三个后继点是否满足约束条件。

若满足条件,则给D_g,S,M,矩阵赋值,并将此点看做possible path;

若所有后继点都不满足条件,则返回0,说明此SP或possible path不能再向前继续搜索,故terminate,并保存这条路径。

从而得到一些路径,再从中选出共享同一SP的最长路径。

Step 3:对Step2最后得到的每一条路径,运用后向搜索算法。

后向搜索算法:对于Step2中得到的每条路径,找出其SP,并入队。再对SP的三个前续点进行判断,满足条件的就入队。若所有前续点都不满足条件,说明后向搜索完毕,保存最长的路径即可。

Step 4:将前后向搜索得到的路径拼接到一起,若大于L_min则保存为最后结果,否则丢弃。

二、        Two Bugs

昨晚发现了两个关键的Bug

1.  在后向搜索算法中,只要某点被搜索到,且满足要求,就入queue。而某点的前续点可能不止一个,被搜索到的点可能已经被其它点搜索过,已经在queue里面。此情况下,不能使其入队。用Exist_inQueue解决

2.  在后向搜索结束后,要保存路径,以前的判断条件是if(M[P.x][P.y] == flagpath)。而在后向搜索时,M矩阵是前向搜索后遗留下来的,有很多非零值。若保存路径时,KeepPath函数中返回的A,B,C三点中可能有几个点并非是这次后向搜索过的点,而只是因为其在前向搜索之后,对应的M[P.x][P.y]刚好等于flagpath。从而使得保存了一个“非本次后向搜索过”的点。

 

本来是用了一个Label数组(与M一样大)来标记每一次后向搜索过的点,但是效率太低。就改用了Exist_inQueue,因为queue实际上是一个数组,从1到tail,就是所有搜索过的点,只要在if(M[P.x][P.y] == flagpath)加上Exist_inQueue判断就行。

三、        Result

1.  结果分为“分part”和“未分part”。“未分part”中“未分part_BUG用队列_速度快_L_min40_第二次.jpg”是最好的。

2.  “分part”大概要370秒左右,“未分part”只需90秒

四、        Problem

用queue代替Label解决BUG2后,“未分part”时速度是很快的,达到了预期的效果,只要90秒左右。但是“分part”后,速度没有本质区别。

五、        Postscript

1.  L_min ,tao_d,ForwardThr,Thr都是可以调的。

我一般设为L_min = 40 ,tao_d = 40,ForwardThr = 10,Thr = 0.6

2.  Determine Synchronous Point 时,我用的 Diagonal band ,用tao_d表示宽度,而UDTW那篇文章中还提到了Horizontal band,用tao_r控制。我都用的Diagonal band。

标签:路径,记录,SP,向搜索,搜索算法,part,Textiling,未分,UDTW
From: https://blog.51cto.com/u_16172916/6579784

相关文章

  • 问题记录:IDEA工程卡在Updating indexes一直加载
    https://blog.csdn.net/JyuSun/article/details/126401031?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-126401031-blog-128690534.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc......
  • 实验失败记录
    用svd对目标信号投影,然后再用svd获取最大值。第一组是去噪后与目标信号的角度,第二组是第二次svd投影后与最大特征向量投影的数值,第三组是原数据与目标信号的角度。1421402 4514501 0.570.33-0.9065-0.90231.81.6......
  • JMeter使用学习记录
    一、安装1.下载JMeterhttps://jmeter.apache.org/download_jmeter.cgi下载安装文件到本地2.安装JDKhttps://www.oracle.com/java/technologies/downloads/3.切换中文进入bin文件夹打开jmeter.properties#language=en下增加#language=zh_CN二、使用1.进入安装文件夹......
  • linux安装jdk、nginx记录
    jdk1、解压tarxzvf压缩包名位置(/usr/local/jdk)2、配置环境变量vi/etc/profile键盘i开启编辑,在最后键入:JAVA_HOME=/usr/local/jdkJRE_HOME=/usr/local/jdk/jreCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libPATH=$PATH:$JAVA_HOME/bin:$JR......
  • Linux下常用scp,tail,grep命令详解[记录]
    scp命令用于在本地主机和远程主机之间复制文件或目录,支持加密传输。它可以通过ssh协议来进行数据传输,因此传输过程是安全的。注意:在使用scp命令时,如果出现权限验证失败的情况,可能需要检查本地主机和远程主机之间的ssh配置是否正确。scp[参数][原路径][目标路径][参......
  • Android知识笔记:记录 2 个 “容易误解” 的Android 知识点
    今天分享两个之前我们可能都搞错的Android知识点,我们还是要追求极致,把不懂的问题搞懂的~1.事件到底是先到DecorView还是先到Window的?有天早上看到事件分发的一个讨论:那么事件到底是先到DecorView还是先到Window(Activity,Dialog)的呢,引发出两个问题:1.touch相关事件在DecorView,Phon......
  • git 如何清除git提交记录?
    1、清除线上仓库git提交记录1.切换到新的分支gitcheckout--orphanlatest_branch2.缓存所有文件(除了.gitignore中声明排除的)gitadd-A3.提交跟踪过的文件(Committhechanges)gitcommit-am"commitmessage"4.删除master分支(Deletethebranch)g......
  • Uniapp下GoEasy通知栏推送不工作问题排查记录
    我们是uniapp开发的app,项目中的系统消息推送使用的是GoEasyWebsocket实时推送,上线一段时间后,客户反馈说,当app没有在前台运行时也需要想办法通知用户一些重要的系统通知。那么此时通知栏推送就需要集成了。集成通知栏推送很麻烦,国内一些公司做了一些插件来帮我们打通app跟厂商之......
  • 记录--Threejs-着色器实现一个水波纹
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助hree.js是一个基于WebGL的JavaScript3D库,用于创建和渲染3D图形场景。一、图像渲染过程1、webGLwebGL:WebGL是一种基于JavaScriptAPI的图形库,它允许在浏览器中进行高性能的3D图形渲染。webGL的......
  • 如何在.net6webapi中记录每次接口请求的日志
    为什么在软件设计中一定要有日志系统?在软件设计中日志模块是必不可少的一部分,可以帮助开发人员更好的了解程序的运行情况,提高软件的可靠性,安全性和性能,日志通常能帮我们解决如下问题:调试和故障排查:日志可以记录程序运行时的各种信息,包括错误,异常,警告等,方便开发人员在出现问题时......