2016 - 2025

感恩一路有你

贪心算法求字符串的最大公共超串(SCS)

浏览量:3127 时间:2024-06-17 16:51:36 作者:采采

在字符串的合并中,经常使用的两种方式是汉密尔顿路径和欧拉路径。本文演示汉密尔顿路径方式寻求字符串合并的最优解。通过贪心算法求出字符串集的1字符串间以非重叠部分为节点,以重叠部分为边,并存在指向。构成一个完整的图。并使用权重衡量最佳连接路径。

构建求两个字符串,最大重叠片段长度的方法

```python

def overlap(a, b, min_length3):

start 0

while True:

start (b[:min_length], start)

if start -1:

return 0

if (a[start:]):

return len(a) - start

start 1

```

通过此方法获得最大重叠片段。

构建找出字符串集中的最大重叠字符串对方法

```python

import itertools

from itertools import permutations

def pick_maximal_overlap(reads, k):

read_a, read_b None, None

best_olen 0

for a, b in (reads, 2):

olen overlap(a, b, min_lengthk)

if olen > best_olen:

read_a, read_b a, b

best_olen olen

return read_a, read_b, best_olen

```

构建此方法来获得字符串集中的最大重叠字符串对,并移除这两条字符串,添加合并后的字符串。

贪心算法求最短的超级串

```python

def greedy_scs(reads, k):

read_a, read_b, olen pick_maximal_overlap(reads, k)

while olen > 0:

(read_a)

(read_b)

(read_a read_b[olen:])

read_a, read_b, olen pick_maximal_overlap(reads, k)

return ''.join(reads)

```

通过不断的迭代,获得最短的超级串。

运行结果

运行结果如下:SCS(shortest common supperstring)是指包含一个字符串集的最小字符串。字符串集中的字符串为其子串。

对贪心算法的理解

这是一个简单的找钱问题。为了求得满足找回金额的最小纸币数。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。