【问题标题】:Subwords of a fibonacci word [closed]斐波那契词的子词[关闭]
【发布时间】:2012-01-24 23:37:18
【问题描述】:

我试图理解这一点:

http://tcs.uj.edu.pl/~walczak/fibonacci.pdf

我有一个由几个 =Fibonacci words= 连接而成的单词, 我需要检查一下,这个词是不是另一个更大的 fib 的子词。词。

例子:

S0    0
S1    01
S2    010
S3    01001
S4    01001010
S5    0100101001001

...

输入 -> 子词是:S2 + S1 + S1 = 0100101

输出:真,因为S2+S1+S1是S4的子字

0100101(子词)

01001010 (S4)


拜托,我在理解英语方面有问题,如果可以的话,请 用java/c#或者delphi写一些代码。

即使是一个示例代码,也许我理解的更多。

【问题讨论】:

  • 我们无法为您编写代码。你试过什么?
  • 请写函数的代码,有什么例子?
  • 该死的你们,我试图解决它 2 天...我在这里找一个知道问题的人,我不要求你为我浪费你的时间。 PDF文件中有3个伪代码,但我看不懂...
  • 这是您需要为最佳答案添加的绿色勾号(但前提是它当然有帮助)
  • 我认为你找错了树,即使这里的一些人可以将这种符号处理成代码(我相信有些人可以),它也不会帮助你特别好地理解它.试试这个网站,它有类似的问题,他们会帮助你分解数学。 mathoverflow.net/questions/60514/subwords-of-the-fibonacci-word

标签: c# java algorithm fibonacci


【解决方案1】:

如果性能没有问题:

您可以使用直接公式进行位数比较:

f(n) =

其中 φ 是黄金比例。 n 表示第 n 位。

//w denotes lookup word
isSubWord(w){
  i=0;
  cnt=0;
  while(i!=w.length){
    if(f(i+cnt)==w(cnt)){
      ++cnt;
    }else{
      cnt=0;
      ++i;
    }
}

【讨论】:

  • 老兄,谢谢。但我已经知道这一点。问题是长度可以是 fib(1000000000) 作为最大值,所以这个算法对小词很有用。我需要使用我链接的 PDF 文件中的技巧,但是这个文件中的描述对我来说太难理解了:/
  • 如果您发现里面的数学有问题,请尝试在 mathoverflow mathoverflow.net/questions/60514/subwords-of-the-fibonacci-word 中发布相同的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多