C, PHP, VB, .NET

Дневникът на Филип Петров


* Задача за n-те точки

Публикувано на 10 февруари 2010 в раздел Математика.

Преди да започнем нека припомним две добре известни задачи и техните решения:

Задача за 9-те точки: Имаме квадратна матрица от 3×3 точки. Свържете всички точки с четири отсечки без да си вдигате ръката от листа.

Решение:

Задача за 16-те точки: Имаме квадратна матрица от 4×4 точки. Свържете всички точки с шест прави отсечки без да си вдигате ръката от листа.

Решение:

Задача за n-те точки: Имаме квадратна матрица от nxn точки, n>2. Свържете всички точки с 2.n-2 отсечки без да си вдигате ръката от листа.

Решение: Ще изведем алгоритъм на базата на предишните две задачи.

1 случай – нека n е нечетно число) Започваме от главния диагонал – от точка (0,0) до точка (n,n). След това прекарваме отсечка вертикално нагоре и „излизаме с една точка нагоре“, т.е. до координати (n, -1). От там под ъгъл 45 градуса по диагонал до точка (-1, n). От там до точка (n-1, n). Продължаваме по спирала от отсечки под прав ъгъл до изчерпване на всички точки.

Пример с матрица 5×5: Очакваме 2*5-2 = 8 отсечки:

Пример с матрица 7×7: Очакваме 2*7-2 = 12 отсечки:

Пример с матрица 9×9: Очакваме 2*9-2 = 16 отсечки:

Индукционна хипотеза: Алгоритъмът за построение работи за всяко нечетно n.

Доказателство: Приемаме, че алгоритъмът работи за нечетното число k. Трябва да докажем, че работи за k+2. Матрицата с k+2 точки се получава като добавим два реда и два стълба към матрицата от k точки. Нека ги сложим по такъв начин, че имаме по един ред от горе и от долу и един ред от ляво и от дясно (тоест горния ляв ъгъл на новата матрица ще е (-1,-1), а долния десен (n+1,n+1)).

Сега нека направим същото построение както за матрицата k, но в обратен ред, т.е. започваме от центъра по спиралата и стигаме до точката (0,0). Тук обаче няма да спираме в точка (0,0), а ще продължим последната отсечка до точка (-1,-1). Това продължение не е нова отсечка, тоест дотук имаме 2k-2 отсечки. От точка (-1,-1) прекарваме хоризонтална отсечка до (-1, n+1), с което преминаваме през всички нови точки от горния ред – това е една нова отсечка. От там прекарваме отсечка вертикално надолу до (n+1,n+1) с което преминаваме през всички отсечки от десния стълб на новата матрица – това е втора отсечка. От там отново хоризонтална отсечка до точка (n+1,-1) с което преминаваме през всички отсечки по долния ред на новата матрица – трета отсечка и накрая вертикално нагоре до точка (-1,0) с което преминаваме през всички точки по левия стълб на новата матрица – четвърта отсечка. Значи имаме общо 4 нови отсечки

=> Общия брой отсечки с които сме преминали през всички точки на матрица (k+2)x(k+2) е:

2*k-2+4 = 2*k+4-2 = 2*(k+2)-2

=> индукционната хипотеза е доказана за нечетно n.

Пример от доказателството на индукционната хипотеза от матрица 9×9 до матрица 11×11:

Стъпка 1: Отсечките са 2*9-2 = 16.

Стъпка 2: Отсечка минаваща през горния ред – отсечките са 17:

Стъпка 3: Отсечка минаваща по десния стълб – отсечките са 18:

Стъпка 4: Отсечка по долния ред – отсечките стават 19:

Стъпка 5: Отсечка по левия стълб – линиите са 20 – точно 11*2-2:

Очевидно е, че от така полученото решение на матрица (k+2)x(k+2) може да се продължи последната отсечка с две точки нагоре (с което отсечките не се увеличават) и от там да се направи нова обиколка от четири отсечки, с което да се покрие матрица от (k+4)x(k+4) с 2*(k+2)-2+4 = 2*(k+4)-2 отсечки. Абсолютно аналогично спиралата може да се продължава до безкрайност => индукционната хипотеза е доказана и за всяко нечетно n>2 можем да свържем матрица с nxn точки с 2*n-2 линии.

2 случай – нека n е четно число) Започваме от точка (n/2+1, n/2). Преминаваме с втора отсечка по диагонал от -45 градуса през 2 точки (ще се намираме в точка (n/2-1, n/2-2)). От там по хоризонтала надясно през три точки до точка (n/2-1, n/2+1). От там по спирала до достигането на точка (n-1, n). От там по хоризонтала до точка (-1, n), после по диагонал до точка (-1, n) и по вертикала до точка (n,n).

Пример с матрица 6×6: Очакваме 2*6-2 = 10 отсечки:

Пример с матрица 8×8: Очакваме 2*8-2 = 14 отсечки:

Индукционна хипотеза: Алгоритъмът за построение работи за всяко четно n.

Доказателство: Приемаме, че алгоритъмът работи за четното число k. Трябва да докажем, че работи за k+2. Отново както в случая на нечетна матрица добавяме по един стълб от ляво и от дясно и по един ред от горе и от долу на съществуващата матрица. Последната отсечка я продължаваме до (n, n+1), с което не увеличаваме текущия брой отсечки (14). От там с четири отсечки „обикаляме“ и пресичаме новите два реда и два стълба, с което преминаваме през всички нови точки. Така получаваме общо 2*k-2+4 = 2*(k+2)-2 точки – точно очаквания резултат.

Пример от доказателството на индукционната хипотеза от матрица 8×8 до матрица 10×10:

Стъпка 1: Отсечките са 2*8-2 = 14.

Стъпки 2, 3, 4 и 5: Отсечките са 2*10-2 = 18.

Очевидно е, че от така полученото решение на матрица (k+2)x(k+2) може да се продължи последната отсечка с една точка наголу (с което отсечките не се увеличават) и от там да се направи нова обиколка от четири отсечки, с което да се покрие матрица от (k+4)x(k+4) с 2*(k+2)-2+4 = 2*(k+4)-2 отсечки. Абсолютно аналогично спиралата може да се продължава до безкрайност => индукционната хипотеза е доказана и за всяко четно n>2 можем да свържем матрица с nxn точки с 2*n-2 линии.

Обобщение: Всяка матрица от nxn, n>2 точки може да бъде покрита с 2*n-2 отсечки.

Задача за търсене на минимум: Намерете минималният брой отсечки, които покриват матрица nxn точки.

Решение: В процес на търсене. Хипотезата е, че минималният брой отсечки е 2*n-2.

Тази страница ще бъде обновявана когато се намери продължение в решението на задачата за минимум. Ще се търси компютърен модел за доказване на хипотезата в частни случаи. Всяка помощ от вас е добре дошла…

 



Добави коментар

Адресът на електронната поща няма да се публикува


*