Числа Каталана — различия между версиями
Novik (обсуждение | вклад) (→Доказательство) |
Novik (обсуждение | вклад) (→Примеры) |
||
Строка 44: | Строка 44: | ||
<tex dpi = 150> C_n = \binom {2n} {n} - \binom {2n} {n-1} = \frac{2n!}{n!n!} - \frac{2n!}{(n-1)!(n+1)!} = \frac{2n!}{n!} (\frac{1}{n!} - \frac{1}{(n-1)! (n+1)}) = \frac{2n!}{n!n!(n+1)} = \frac{1}{n+1} \binom {2n} {n} </tex> | <tex dpi = 150> C_n = \binom {2n} {n} - \binom {2n} {n-1} = \frac{2n!}{n!n!} - \frac{2n!}{(n-1)!(n+1)!} = \frac{2n!}{n!} (\frac{1}{n!} - \frac{1}{(n-1)! (n+1)}) = \frac{2n!}{n!n!(n+1)} = \frac{1}{n+1} \binom {2n} {n} </tex> | ||
− | == | + | ==Задача разбиения выпуклого <tex dpi = 155 > n </tex>—угольника на треугольники не пересекающимися диагоналями== |
− | === | + | ===Доказательство=== |
+ | [[Файл:Vectorpaint.png|145px|right]] | ||
+ | Пусть <tex dpi = 120>t_n</tex> — число триангуляций <tex dpi = 120> (n + 2) </tex> -угольника при <tex dpi = 120> n \geqslant 1 </tex>; положим <tex dpi = 120> t_0 = 1 </tex>. Пронумеруем вершины многоугольника, начиная с произвольной против часовой стрелки. Рассмотрим произвольную триангуляцию и выделим треугольник, примыкающий к стороне 01 (см. рис.). | ||
+ | |||
+ | Пусть <tex dpi = 120>k</tex> — номер третьей вершины этого треугольника. Выделенный треугольник разбивает <tex dpi = 120>(n + 2)</tex>-угольник на <tex dpi = 120>k</tex>-угольник и <tex dpi = 120>(n-k+3)</tex>-угольник, каждый из которых триангулирован диагоналями. Перенумеруем вершины этих многоугольников против часовой стрелки так, чтобы нумерация вершин в каждом из них начиналась с 0. В результате получим пару триангуляций <tex dpi = 120>k</tex>-угольника и <tex dpi = 120>(n-k+3)</tex>-угольника. Наоборот, каждая пара триангуляций <tex dpi = 120>k</tex>-угольника и <tex dpi = 120>(n-k+3)</tex>-угольника | ||
+ | определяет триангуляцию исходного многоугольника. Поэтому | ||
+ | <tex dpi = 120>t_{n+1} = t_0 t_n + t_1 t_{n-1} + \cdot \cdot \cdot + t_n t_0 </tex> | ||
+ | и поскольку <tex dpi = 120>t_0 = 1</tex>, последовательность чисел <tex dpi = 120>t_n</tex> совпадает с последовательностью Каталана. | ||
+ | |||
+ | ===Пример=== | ||
[[Файл:Каталан.PNG|375px|thumb|right|Разбиение выпуклого шестиугольника]] | [[Файл:Каталан.PNG|375px|thumb|right|Разбиение выпуклого шестиугольника]] | ||
Ответ на задачу при <tex dpi = 120> n = 3 </tex> тривиален: никаких | Ответ на задачу при <tex dpi = 120> n = 3 </tex> тривиален: никаких | ||
Строка 66: | Строка 75: | ||
<tex dpi = 120> 42 + 14 + 2 \cdot 5 + 5 \cdot 2 + 14 + 42 = 132 </tex> | <tex dpi = 120> 42 + 14 + 2 \cdot 5 + 5 \cdot 2 + 14 + 42 = 132 </tex> | ||
способа.Такие вычисления можно проводить и дальше. | способа.Такие вычисления можно проводить и дальше. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Подсчет чисел Каталана== | ==Подсчет чисел Каталана== |
Версия 21:17, 27 ноября 2014
Содержание
Числа Каталана
Определение: |
Числа Каталана — последовательность чисел, выражающих:
|
Первые несколько чисел Каталана:
Формулы вычисления чисел Каталана
Рекуррентная формула
Доказательство
Рекуррентную формулу легко вывести из задачи о правильных скобочных последовательностях.
Пусть
- произвольная правильная скобочная последовательность длины . Она начинается с открывающейся скобки. Найдем парную ей закрывающуюся скобку и представим последовательность в виде: , где и - тоже правильные скобочные последовательности. Если длина последовательности равна , то последовательность можно составить способами. Тогда длина последовательности равна и последовательность можно составить способами. Комбинация любого способа составить последовательность с любым способом составить последовательность даст новую последовательность , а величина может меняться от до . Получили рекуррентное соотношение: . Так как , то последовательность совпадает с числами Каталана. Если занести всё под знак суммы, то получаем конечную формулу:
Аналитическая формула
Доказательство
Правильной скобочной структуре из
открывающих и закрывающих скобок мы поставим в соответствие путь в квадрате . Путь начинается в точке и заканчивается в точке . Открывающей скобке мы сопоставляем горизонтальный отрезок длины , а закрывающей — вертикальный. Если путь сопоставлен правильной структуре, то ни одна его точка не может лежать выше главной диагонали квадрата. Обратно, такому пути ("правильному пути") сопоставляется правильная скобочная структура. Геометрическое представление правильных скобочных структур позволяет найти выражение для чисел Каталана.Сместим правильный путь на 1 клетку вниз. Теперь правильный путь начинается в точке
, заканчивается в точке и не имеет общих точек с прямой — биссектрисой первого квадранта. Нам нужно найти количество правильных путей. Для этого мы найдем количество неправильных, и из общего числа путей вычтем количество неправильных. Мы рассматриваем пути из точки в точку . Длина такого пути равна и он содержит вертикальных сегментов и горизонтальных. Количество всех таких путей равно числу способов выбрать вертикальных сегментов из общего числа сегментов, т.е. равно .Рассмотрим неправильный путь и его первую точку на прямой
(точка A). Отрезок пути от точки до точки A заменим симметричным относительно прямой . Мы получим путь длины , идущий из точки в точку (Смотри рис.).Такой путь обязательно пересекает прямую
. Обратно, пусть нам дан путь длины из точки в точку и пусть — первая точка этого пути, лежащая на прямой . Заменив участок пути от точки до точки A на симметричный относительно прямой , мы получим неправильный путь из точки в точку . Следовательно, неправильных путей из точки в точку столько же, сколько путей из точки в точку . Такой путь длины содержит горизонтальных и вертикальных участков. Поэтому, количество таких путей равно . Значит, количество правильных путей (т.е. число Каталана ) равно
Задача разбиения выпуклого —угольника на треугольники не пересекающимися диагоналями
Доказательство
Пусть
— число триангуляций -угольника при ; положим . Пронумеруем вершины многоугольника, начиная с произвольной против часовой стрелки. Рассмотрим произвольную триангуляцию и выделим треугольник, примыкающий к стороне 01 (см. рис.).Пусть
— номер третьей вершины этого треугольника. Выделенный треугольник разбивает -угольник на -угольник и -угольник, каждый из которых триангулирован диагоналями. Перенумеруем вершины этих многоугольников против часовой стрелки так, чтобы нумерация вершин в каждом из них начиналась с 0. В результате получим пару триангуляций -угольника и -угольника. Наоборот, каждая пара триангуляций -угольника и -угольника определяет триангуляцию исходного многоугольника. Поэтому и поскольку , последовательность чисел совпадает с последовательностью Каталана.Пример
Ответ на задачу при
тривиален: никаких диагоналей проводить не надо. В четырёхугольнике можно провести любую из двух диагоналей, так что способов два. В пятиугольнике — из любой вершины две диагонали, способов. При — первый не вполне очевидный ответ: способов (см. рис.); чтобы не запутаться, сторона BC выделена и отдельно нарисованы разрезания, в которых к ней примыкают соответственно треугольники и .Для семиугольника можно выделить одну из сторон и расклассифицировать разрезания в зависимости от того, какой треугольник к этой стороне примыкает. Имеем 5 разных случаев. В первом и последнем из них количество разбиений равно 14, ибо после отрезания треугольника остаётся шестиугольник. Во втором и четвёртом случаях при вырезании треугольника семиугольник распадается на треугольник и пятиугольник. В третьем случае семиугольник распадается на два четырёхугольника. Поскольку каждый из них можно разбить двумя способами, получаем
варианта. Итак, семиугольник можно разбить всего способами. Рассматривая восьмиугольник, аналогично получаем способа.Такие вычисления можно проводить и дальше.Подсчет чисел Каталана
Воспользуемся рекуррентной формулой
, описанной выше.Псевдокод:
int catala_number(n: int) int d[n+1] // создаем массив d, где будут храниться числа Каталана d[0] = 1 for i = 1 to n for j = 0 to i-1 d[i] += d[j]*d[i-1-j] return d[n]