Fibonacci numbers {Fn, n ≥ 0} satisfy the recurrence relation

(1)
Fn+2 = Fn+1 + Fn,

along with the initial conditions F1 = 1 and F0 = 0.

The Fibonacci name has been attached to the sequence 0, 1, 1, 2, 3, 5, ... due to the inclusion in his 1202 book Liber Abaci of a rabbit reproduction puzzle: under certain constraints the rabbit population at discrete times is given exactly by that sequence. As naturally, the sequence is simulated by counting the tilings with dominoes of a 2×n board:

A tiling of a 2×n board may end with two horizontal dominoes or a single vertical domino:

In the former case, it's an extension of a tiling of a 2×(n-2) board; in the latter case, it's an extension of a tiling of a 2×(n-1). If Tn denotes the number of domino tilings of a 2×n board, then clearly

Tn = Tn-2 + Tn-1

which is the same recurrence relation that is satisfied by the Fibonacci sequence. By a direct verification, T1 = 1, T2 = 2, T3 = 3, T4 = 5, etc., which shows that {Tn} is nothing but a shifted Fibonacci sequence. If we define, T0 = 1, as there is only 1 way to do nothing; and T-1 = 0, because there are no boards with negative side lengths, then Fn = Tn-1, for n ≥ 0.

The domino tilings are extensively used in Graham, Knuth, Patashnik and by ZeitzBenjamin & Quinn economize by considering only an upper 1×n portion of the board (and its tilings). This means tiling a 1×n board with 1×1 and 1×2 pieces.

I'll use Benjamin & Quinn's frugal tilings to prove Cassini's Identity

Fn+1·Fn+1 - Fn·Fn+2 = (-1)n

In terms of the tilings, I want to prove that Tn·Tn - Tn-1·Tn+1 = (-1)n.

The meaning of the term Tn·Tn is obvious: this is the number of ways to tile two 1×n boards where the tilings of the two boards are independent of each other. Similarly, Tn-1Tn+1 is the number of ways to tile two boards: one 1×(n-1) and one 1×(n+1). Now, the task is to retrieve the relation between the two numbers annunciated by Cassini's identity.

Our setup consists of two 1×n boards:

with the bottom board shifted one square to the right:

The tilings of the two boards may or may not have a fault line. A fault line is a line on the two boards at which the two tilings are breakable. For example, the tilings below have three fault lines:

The trick is now to swap tails: the pieces of the two tilings (along with the boards) after the last fault line:

Since the bottom board has been shifted just one square, the swap produces one tiling of a 1×(n+1) - the top board in the diagram - and one tiling of a 1×(n-1) board - the bottom board in the diagram. Note that the old faults have been preserved and no new faults have been introduced.

Thus, in the presence of faults, there is a 1-1 correspondence between two n-tilings (Tn) and a pair of (n-1)- and (n+1)-tilings. The time is to account for the faultless combinations, if any.

But there are. Any 1×1 square induces a fault. This leaves exactly two faultless tilings. If n is odd, both n-1 and n+1 are even, there is a unique pair of (n-1)- and (n+1)-tilings:

If n is even, there is a unique n-tiling that, when shifted, generates no fault lines:

References

  1. A. T. Benjamin, J. J. Quinn, Proofs That Really Count: The Art of Combinatorial Proof, MAA, 2003
  2. R. Graham, D. Knuth, O. Patashnik, Concrete Mathematics, 2nd edition, Addison-Wesley, 1994.
  3. P. Zeitz, The Art and Craft of Problem Solving, John Wiley & Sons, 1999

Related material
Read more...

 
   
 
 
 
 
 
 
 
 
   

|Contact| |Front page| |Contents| |Algebra| |Store|

Copyright © 1996-2011 Alexander Bogomolny

本文转自:

http://www.cut-the-knot.org/arithmetic/combinatorics/FibonacciTilings.shtml

(转)Fibonacci Tilings的更多相关文章

  1. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  2. #26 fibonacci seqs

    Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...

  3. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  4. 斐波拉契数列(Fibonacci) 的python实现方式

    第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... >>> fibs = [0,1] >>&g ...

  5. fibonacci数列(五种)

    自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...

  6. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  7. Fibonacci 数列算法分析

    /************************************************* * Fibonacci 数列算法分析 ****************************** ...

  8. 算法系列:Fibonacci

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  9. 2016 Multi-University Training Contest 1 I. Solid Dominoes Tilings

    Solid Dominoes Tilings Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

随机推荐

  1. rspec的一些常见用法

    这里讲了如何安装rspec,安装使用rspec. 下面介绍一下rspec中常见的使用方法. 下面是一个最简单的测试用例,判断true是不是等于true,should_be是旧的用法,新用法推荐使用ex ...

  2. Supporting Connected Routes to Subnet Zero

    Supporting Connected Routes to Subnet Zero IOS allows the network engineer to tell a router to eithe ...

  3. .NET开源工作流RoadFlow-流程设计-流程步骤设置-数据设置

    数据设置是控制在流程处理过程中,当前步骤的数据显示与编辑状态,控制当前步骤哪些字段为只读,隐藏或可编辑.需要配合表单设计器使用.

  4. iOS进阶学习-数据库

    一.数据库管理系统 1.SQL语言概述:SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 2.常见 ...

  5. Entity Framework学习笔记(一)

    请注明转载地址:http://www.cnblogs.com/arhat 哈哈!老魏回来了,4月份的内容开始更新了,由于3月份时间都在做项目,没有时间写了,那么4月份老魏会尽可能的多写点东西的.那么4 ...

  6. urllib3 ProxyManager

    ProxyManager is an HTTP proxy-aware subclass of PoolManager. It produces a singleHTTPConnectionPool ...

  7. XAML中ContentControl,ItemsControl,DataTemplate之间的联系和区别

    接触XAML很久了,但一直没有深入学习.今天学习了如标题所示的内容,所以来和大家分享一下,或者准确的说是自我回顾一遍. 在XAML中,有两类我们常见的控件,分别是ContentControl和Item ...

  8. OC中成员变量的命名

    先前写C++ 的时候,命名成员变量一般都是用 m_veriableName:的方式,但是进到新项目组,用了OC以后,发现成员变量都是用 veriableName_的方式,最后的一个下划线表示是成员变量 ...

  9. cocos2dx中帧循环的伪代码实现

    1.在游戏开发中,帧率很大程度上体现了游戏的流畅度,帧循环是游戏中一个很重要的概念 2.下面用伪代码实现了cocos2dx中的帧循环 /*main函数调用*/ CCApplication::share ...

  10. 最大后验估计(MAP)

    最大后验估计是根据经验数据获得对难以观察的量的点估计.与最大似然估计类似,但是最大的不同时,最大后验估计的融入了要估计量的先验分布在其中.故最大后验估计可以看做规则化的最大似然估计. 首先,我们回顾上 ...