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. 纯真IP数据库导入mysql

    下载纯真IP数据库 安装后解压到本地为ip.txt 格式为: 1.1.145.0       1.1.147.255     泰国 沙功那空 1.1.148.0       1.1.149.255   ...

  2. Data Developer Center > Learn > Entity Framework > Get Started > Loading Related Entities

    Data Developer Center > Learn > Entity Framework > Get Started > Loading Related Entitie ...

  3. VS 与 SQLite数据库 连接

    SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是不够用的.我们需要的sqlite3.lib文件并不在 ...

  4. 认识Linux

    Linux的内核版本 1.如何查看Linux的内核版本 # uname -r -.el6.i686 2. 2.6.32-358的含义    主版本.次版本.释出版本-修改版本 3.主次版本编号规则  ...

  5. JavaScript美术馆进化史

    内容选自<<JavaScript DOM 编程艺术>>第4-6章,跟着作者一起见证美术馆的进化吧. 先放效果图,然后一步步做出每个效果.每个效果都有它实用的地方,且知道过程可以 ...

  6. SqlServer中Sql语句的逻辑执行顺序

    准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...

  7. C++四则运算出题器---有答案版

    一.实验题目 四则运算扩展----能接受答案并判断对错然后给出成绩. 二.实验思路 在每次输出算式后面输入答案,然后判断对错,对则统计. 稍微优化了一下界面. 三.代码 // 12345.cpp : ...

  8. Liferay IDE 3.1 M1发布啦

    很嗨森,以后就再也不用SDK和下载.ivy啦 新增功能主要有: 1.Liferay Workspace(用来存放Liferay Module项目) 2. Liferay Gradle Module P ...

  9. mysql 存储过程 -- 游标的使用(备忘)

    BEGIN ; DECLARE f_ratio FLOAT DEFAULT 0.8; ); ); DECLARE i_statDate DATE; DECLARE i_accumulateCount ...

  10. Careercup - Google面试题 - 6407924087783424

    2014-05-07 15:17 题目链接 原题: Given an array of n elements (a1,a2,..ai,...,an). You are allow to chose a ...