免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Vic_Yu
打印 上一主题 下一主题

请问一个算法"如何实现一组数组是另一组数组的真子集" [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-10-26 17:15 |只看该作者
原帖由 Lonki 于 2007-10-26 15:25 发表
#1. 你要求"连续", 而集合是无序的, 所以现成的Set相关module只能作为你的部分检测.
#2. 按纯算法来做, 就失去了Perl的优势. 写了一个检测, 应该可以..

my @set1 = qw/1 2/;
my @set2 = qw/1 2 3/;
my @s ...


这个是输出的结果,
。。。。。。
<1><2> <1><1><2><2>
No
。。。。。。
这个是有问题的,前一个应该是后一个的子集。

论坛徽章:
0
12 [报告]
发表于 2007-10-26 17:19 |只看该作者
原帖由 Vic_Yu 于 2007-10-26 17:15 发表


这个是输出的结果,
。。。。。。

No
。。。。。。
这个是有问题的,前一个应该是后一个的子集。




(1, 2)当然不是 (1, 1, 2, 2)的真子集.
(1, 1, 2, 2)不包含(1, 2)以外的元素.

我前面还向你确认过, 忘了?

如果对此你的需求是"是真子集", 那么应该称之为"子串",  代码就很简单了.

[ 本帖最后由 Lonki 于 2007-10-26 17:22 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-10-26 17:27 |只看该作者
原帖由 Lonki 于 2007-10-26 17:19 发表




(1, 2)当然不是 (1, 1, 2, 2)的真子集.
(1, 1, 2, 2)不包含(1, 2)以外的元素.

我前面还向你确认过, 忘了?


OK,那我们现在讨论子集。(1,1,2,2)也应该包括(1,2)对吧。
其实这个东西是一个抽象,高层次的,我主要是想看对于用HASH分析的2个BMP位图。是用C#做起来快些,还是用perl做一起来快些。两个位图的二进制代码存贮到两个数组里面,然后比较两个数组。用来判断,其中一个图,是不是另外一个图的一部分。如果结合这个考虑,那么(1,1,2,2)应该是包含(1,2)的。

论坛徽章:
0
14 [报告]
发表于 2007-10-26 17:30 |只看该作者
这是“真子集”嘛。
不会用名词就别乱用,
真子集,还甄子丹呢。

论坛徽章:
0
15 [报告]
发表于 2007-10-26 17:41 |只看该作者
原帖由 放驴娃 于 2007-10-26 17:30 发表
这是“真子集”嘛。
不会用名词就别乱用,
真子集,还甄子丹呢。



:>

这个头像是哪个片里面的啊? 悄悄告诉我

论坛徽章:
0
16 [报告]
发表于 2007-10-26 17:44 |只看该作者
原帖由 Vic_Yu 于 2007-10-26 17:27 发表


OK,那我们现在讨论子集。(1,1,2,2)也应该包括(1,2)对吧。
其实这个东西是一个抽象,高层次的,我主要是想看对于用HASH分析的2个BMP位图。是用C#做起来快些,还是用perl做一起来快些。两个位图的二 ...


速度真难说..

用C++吧 ^_^

论坛徽章:
0
17 [报告]
发表于 2007-10-26 17:53 |只看该作者
原帖由 放驴娃 于 2007-10-26 17:30 发表
这是“真子集”嘛。
不会用名词就别乱用,
真子集,还甄子丹呢。


第一,(1,1,2,2)这个并不是一个集合,集合是不允许有重复的.
第二,概念:

子集就是一个集合中的元素全部都是另一个集合中的元素,有可能与另一个集合相等

真子集就是一个集合中的元素全部是另一个集合中的元素,但不存在相等

我分析不是有人不懂.如果有人不懂,我感觉可以是"你"啦

论坛徽章:
0
18 [报告]
发表于 2007-10-26 18:09 |只看该作者
你自己都知道集合是不能重复的,那还扯什么真子集啊。

论坛徽章:
0
19 [报告]
发表于 2007-10-26 19:08 |只看该作者
use strict;
my @aa = (1,2,3,4);
my @bb = (1,2,1,2,3,4,5,6,7,8  ) ;
my %aa_hash=();
my %bb_hash=();

for(@aa){
    $aa_hash{$_}=' ';
}
for(@bb){
    $bb_hash{$_}=' ';
}
foreach(keys %bb_hash ) {
    if(exists $aa_hash{$_}){
        delete $aa_hash{$_};
        delete $bb_hash{$_};
    }
}

if((scalar keys %aa_hash) ==0 and (scalar keys %bb_hash)>0 ){
    print '@aa is @bb\'s child',"\n";
}

[ 本帖最后由 smonkey0 于 2007-10-26 19:21 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2007-10-26 19:33 |只看该作者
靠,搞半天原来是在比图。这种相似性问题,建议参考生物学的blast的算法比较好~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP