希尔伯特旅馆
Infinity & Beyond
题目详情
有一家只有一层、房间编号为 的旅馆,并且现在所有房间都住满了。
- 来了 1 位新客人,如何安排?
- 来了无限多位新客人,如何安排?
- 来了无限多辆大巴,每辆车上又有无限多位客人,如何安排?
Suppose you have a hotel which has one floor with infinite number of rooms in a row and all of them are occupied.
- A new customer wants to check in, how will you accommodate her?
- What if infinite number of people want to check in, how will you accommodate them?
- Suppose infinite number of buses arrive at the hotel, each having infinite number of people, how will you accommodate them?
Hint
Define Infinity ;)
解析
-
让原本住在 号房的客人搬到 号房,腾出 1 号房。
-
让原本住在 号房的客人搬到 号房,所有奇数房间空出来用于安置新客。
-
将“(车号, 车内座号)”建立到自然数的一一映射(例如 Cantor 配对函数),把每位新客映射到一个唯一房号即可。
Original Explanation
Solution
- Since there are infinite number of rooms and infinite+1= infinite
Just ask person in room k to move to k+1, thus making the first room vacant. :)
- In the other case, since infinite+infinite = infinite
asking person in room k to move to 2k solves the problem.
- Since NxN is countable set. We can get a 1-1 mapping from N to NxN
Hence, we can accommodate (infinite people X infinite buses) in the hotel.
Relevant article: http://en.wikipedia.org/wiki/Cantor_pairing_function