(转)Fibonacci Tilings
Fibonacci numbers {Fn, n ≥ 0} satisfy the recurrence relation
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 Zeitz. Benjamin & 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
- A. T. Benjamin, J. J. Quinn, Proofs That Really Count: The Art of Combinatorial Proof, MAA, 2003
- R. Graham, D. Knuth, O. Patashnik, Concrete Mathematics, 2nd edition, Addison-Wesley, 1994.
- P. Zeitz, The Art and Craft of Problem Solving, John Wiley & Sons, 1999
Related material
|
|
|Contact| |Front page| |Contents| |Algebra| |Store|
Copyright © 1996-2011 Alexander Bogomolny
本文转自:
http://www.cut-the-knot.org/arithmetic/combinatorics/FibonacciTilings.shtml
(转)Fibonacci Tilings的更多相关文章
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- #26 fibonacci seqs
Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...
- 关于java的递归写法,经典的Fibonacci数的问题
经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...
- 斐波拉契数列(Fibonacci) 的python实现方式
第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... >>> fibs = [0,1] >>&g ...
- fibonacci数列(五种)
自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...
- POJ3070 Fibonacci[矩阵乘法]
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
- Fibonacci 数列算法分析
/************************************************* * Fibonacci 数列算法分析 ****************************** ...
- 算法系列:Fibonacci
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- 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 ...
随机推荐
- 成功完成Moses Manual中BaseLineSystem
终于把这个破法语句子翻译出来了,各种耗时,bug,弄了一天,明天争取看完详细的翻译教程! 而且还要学习中文分词,晚安,Moses!
- HTML5 API 之 history
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- try-catch-finally中return语句的执行
catch里return后还会执行finally吗??在java里,是的.但是值得注意的是,在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch ...
- Redo日志
undo日志有一个潜在的问题,即我们在将书屋改变的所有数据写到磁盘前不能提交该事务.有时,如果让数据库修改暂时只存在于主存中,我们可以节省磁盘IO;只要在崩溃发生时有日志可以恢复,这样做就是安全的. ...
- 官方的objective - c风格指南。
The official raywenderlich.com Objective-C style guide. This style guide outlines the coding convent ...
- angularJS项目-ajax事件的按钮loading和页面loading状态 & Controller之间通信-待续
1).按钮loading --TODO 2). page loading状态 1.在module中注入指令 // Route State Load Spinner(used on page or co ...
- java数据结构和算法------顺序查找
package iYou.neugle.search; public class Sequence_search { public static int SequenceSearch(double[] ...
- 47.MIF和COE文件格式
.mif和.coe这两个文件分别是Quartus和ISE的RAM和ROM的初始化文件,因此了解他们的格式,是很必要的 MIF文件的格式如下: WIDTH=14; --数据宽度为14位 DEPT ...
- Java Day 09
子父类的构造函数 在子类的构造函数中,第一行有一个默认的隐式语句:super() 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数. 为什么子类实例化的时候要访问父类中的构造 ...
- [无人值守安装操作系统]_FTP+TFTP+DHCP+Kickstart+PXE_中遇到的错误
本篇记录的是实验 http://www.cnblogs.com/snsdzjlz320/p/5629127.html 过程出现的问题 问题一: PXE-E11:ARP timeout TFTP c ...