Algorithm 具有奇怪循环重复的唯一置换
我有一些像这样的字符串:Algorithm 具有奇怪循环重复的唯一置换,algorithm,matlab,permutation,perms,Algorithm,Matlab,Permutation,Perms,我有一些像这样的字符串: 'RRSSTT' 'RRRSSSTTT' 'RRRRSSSSTTTT' etc... 我需要提取具有此属性的所有唯一置换: “RRSSTT”RRTTSS';'SSRRTT';'SSTTRR';'TTRRSS';'TTSSRR'都是相同的字符串,并且 “RSTRST”RTSRTS';'TSRTSR';'TRSTRS';'SRTSRT';'STRSTR'都是相同的字符串 使用命令perms我获得所有排列(若字符串有6个元素,则排列为720)。 使用upermsscr
'RRSSTT'
'RRRSSSTTT'
'RRRRSSSSTTTT'
etc...
我需要提取具有此属性的所有唯一置换:
- “RRSSTT”RRTTSS';'SSRRTT';'SSTTRR';'TTRRSS';'TTSSRR'都是相同的字符串,并且
- “RSTRST”RTSRTS';'TSRTSR';'TRSTRS';'SRTSRT';'STRSTR'都是相同的字符串
perms
我获得所有排列(若字符串有6个元素,则排列为720)。
使用uperms
script,我获得所有唯一的排列(如果字符串有6个元素,则排列为90)。我在mathworks()上找到了uperm
在这里之前,所有这些都是可行的,但我需要编写/找到一个生成具有上述特殊属性的置换的其他算法。
如果字符串为“RRSSTT”,则所需的排列必须为15
有人已经面临这个问题,可以帮助我吗
------编辑------
有15根等效管柱,例如:
Group 1: Group 6: Group 11:
'RSTTSR' 'RSTSTR' 'RSSTRT'
'SRTTRS' 'SRTRTS' 'STSRRT'
'STRRTS' 'STRTRS' 'RSRTTS'
'RTSSTR' 'TRSRST' 'STTRSR'
'TRSSRT' 'TSRSRT' 'TRRSTS'
'TSRRST' 'RTSTSR' 'TRTSSR'
Group 2: Group 7: Group 12:
'RSTRST' 'RSSRTT' 'RSSTTR'
'SRTSRT' 'SSTRRT' 'SRRTTS'
'STRSTR' 'RRSTTS' 'STTRRS'
'RTSRTS' 'STTSRR' 'TRRSST'
'TRSTRS' 'TRRTSS' 'TSSRRT'
'TSRTSR' 'TTRSSR' 'RTTSSR'
Group 3: Group 8: Group 13:
'RSTSRT' 'SRRSTT' 'SRSTTR'
'STRSRT' 'SSRTTR' 'SRRTST'
'RSTRTS' 'RRTSST' 'RTRSST'
'STRTSR' 'TSSTRR' 'TSSRTR'
'TRSRTS' 'RTTRSS' 'TSTRRS'
'TRSTSR' 'TTSRRS' 'RTTSRS'
Group 4: Group 9: Group 14:
'SRTRST' 'RSRSTT' 'RRSSTT'
'SRTSTR' 'SSRTRT' 'SSRRTT'
'RTSRST' 'STSTRR' 'SSTTRR'
'TSRSTR' 'RRTSTS' 'RRTTSS'
'RTSTRS' 'TRTRSS' 'TTRRSS'
'TSRTRS' 'TTSRSR' 'TTSSRR'
Group 5: Group 10: Group 15:
'STRRST' 'SRSRTT' 'SRSTRT'
'RSTTRS' 'SSTRTR' 'RSRTST'
'SRTTSR' 'RRSTST' 'STSRTR'
'RTSSRT' 'TSTSRR' 'RTRSTS'
'TRSSTR' 'RTRTSS' 'TSTRSR'
'TSRRTS' 'TTRSRS' 'TRTSRS'
我需要为每个组返回一个字符串,我更喜欢以R作为第一个字母的字符串。
对不起,换了符号
-----编辑1-----
我会尽力解释原因
str1='RSTRST'
及
它们是等价的
你必须在STR1中考虑“R”,用“S”代替“R”,用“T”代替“S”,最后用“R”代替“T”。一个组中的所有字符串都是正确的,但在每个组中,所有字符串都是等效的,我只需要从每个组中提取一个字符串
正如比克所说,字符替换规则并不总是有效的,我需要找到合适的角色。我想现在我理解了你的代码,这将解决问题:
- 使用
生成包含所有可能解决方案的集合uperm
- 对于
返回的每个解决方案,调用uperm
,并仅在返回[a]=unique(解决方案,'stable')
时(或任何固定订单)接受它RST
'aabbcc'
排列吗?或者告诉我们你用什么规则来获得排列?@bicker我添加了一些例子,很抱歉改变了符号。我不明白这四组的意思。对于一个输入示例,您能给出您期望的所有15种排列吗?以及一些不应包括在原因中的示例(例如,不包括ABC,因为CDE已经包括在内)@Daniel尽快我将完成所有其他组您的组不一致。组中的某些排列是同一组中其他字符串的字符替换,其他排列是循环旋转。您需要告诉我们您使用什么规则来选择组(或更正您的示例)。例如,在第7组中:'RSSRTT'
,'RRSTTS'
,'TRRTSS'
。这三个字符串怎么可能相互关联?谢谢,我正在尝试使用它,我很快会告诉你一些事情。我已经尝试过了,但我认为这不是正确的方法。试着观察第3组,有两个字符串唯一(解决方案,'stable')
返回RST
。相反,在第8组中,没有返回RST
的字符串。也许字符串之间没有明显的相关性,我只能模拟物理问题对这些字符串进行分组@达涅利刚刚意识到我对你们的团队有错误的理解,因为。为什么RSTSRT和RSTRT是一样的?我本以为他们会分成不同的小组。
str2='STRSTR'