微站和网站数据同步高质量视频素材网站
微站和网站数据同步,高质量视频素材网站,网站服务器租用有什么好,网站充值提现公司账务怎么做方法一 Hierholzer’s Algorithm 相关概念#xff1a; 1 欧拉路径#xff1a;在无向图中#xff0c;每个边只经过一次#xff0c;形成的路径。在有向图中#xff0c;是指每条有向边只使用一次#xff0c;形成的路径。 2 欧拉回路#xff1a;欧拉路径是一个环。 3 在…方法一 Hierholzer’s Algorithm 相关概念 1 欧拉路径在无向图中每个边只经过一次形成的路径。在有向图中是指每条有向边只使用一次形成的路径。 2 欧拉回路欧拉路径是一个环。 3 在无向图中存在欧拉路径的条件是每个顶点的边是偶数。或者图中有两个是奇数条边的顶点。 4 在图中找欧拉回路的算法Hierholzer’s Algorithm。算法描述是选择开始顶点v沿着顶点v的边一直访问直到访问到顶点v。这个访问是不可能卡在其他节点停止的因为图中所有节点的边是偶数。从一个顶点进去就要从一个顶点出来直到顶点v。这个路径是一个欧拉回路但可能没有覆盖了图中所有的边。在前面一个路径中如果存在节点uu有邻边还没有访问从顶点u继续访问得到一个欧拉回路将该回路接到上之前访问的路径后得到新的访问路径。直到所有顶点的边都访问完得到完整的欧拉回路。 这里注意新的路径接到前面的路径不是简单的放在后面而是可能插在中间的。具体细节查看《数据结构与算法分析Java语言描述》第2版的第266,267页。
翻译到这都题目是这样的。所有答案的组合数是k^n。那么我们把前n-1个字符串看做是节点最后一个字符是边。例如n2k2所有可能的组合是00,01,10,11。那么可以把0,1看做节点。0节点有两条边分别为0,1得到组合00,01。 欧拉回路是从节点0开始0,1,1,0; 最后答案将节点0补上 :00110。参考官网解决方案一中提出了post-order概念。 自己的思想用map构建图实现Hierholzer’s算法。
DFS 想法为了符合要求最后返回的字符串answer应该包含所有可能的组合。可能的组合数应该是k^n。为了让answer最短直觉上应该是使得answer的最后n-1个字符可以重用。 例如n2k2所有可能的组合是00,01,10,11。answer(00110)。 DFS的实现是 目标找到包含所有组合的最短字符串 创建图节点是所有可能的组合例如00,01,10,11边如果node1的最后n-1个字符加上[0,k-1]范围内的任何一个数可以得到node2则node1和node2之间有条边。例如 (00)1(01)则00和01之间有条边。 转移对每一个节点取最后n-1位如果能够有边成功转移到另外一个未被访问的节点则继续DFS。退出条件是所有的组合都访问完成。 来自网页 代码实现
方法二Inverse Burrows-Wheeler Transform 1 Lyndon WordLyndon word 是一个非空字符串在字典顺序上比它的所有旋转都要严格地小。 Lyndon word的性质一个Lyndon word 被分为左右两部分左边的字符串在字典顺序上严格小于右边的字符串。wuv,uvwuv,uvw=uv,u。如果v尽可能的长则将uv称为标准分解standard factorization 举例来讲用{0,1}可以组成的Lyndon word 可能有0,1,01,001,011,0001,0011,0111… 来自wiki 2 de Bruijn sequences 将长度为n的Lyndon word 按字典顺序链接起来形成de Bruijn sequences。这个视频中有讲解。 这两张图片来源于视频中。 3 Inverse Burrows-Wheeler Transform IBWT算法生成可以形成de Bruijn 序列的Lyndon word。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88896.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!