avva: (Default)
[personal profile] avva
Вот не очень сложная математическая задачка примерно олимпиадного типа для тех, кому это интересно. Постараюсь описать её в как можно более элементарных терминах.

Возьмём какой-нибудь алфавит из двух символов; для наглядности пусть это будет {1,2}, т.е. разрешённые символы - единица и двойка. Конкретный выбор символов роли не играет.

Рассмотрим какую-нибудь последовательность x1, x2, ... , xn , где каждый член последовательности - символ из нашего алфавита. Например, n может быть 10,
а последовательность может быть 2221112221 . Вместо "последовательности" может оказаться удобным говорить просто о строках, построенных на данном алфавите - это одно и то же.

Рассмотрим все строки вида xi, xi+1, ... , x2*i внутри нашей последовательности (i двигается от единицы и выше; если 2*i > n, то строка заканчивается на n-ном месте). В приведенном выше примере такими будут: x1...x2 (то есть "22"); x2...x4 (то есть "221"); x3...x6 (то есть "2111"); x4...x8 (то есть "11122"); и, наконец, x5...x10 (то есть "112221") (ещё на самом деле x6...x10 итп., но они неинтересны, как будет ясно из нижеизложенного).

Может случиться так, что какая-то из этих строк такого вида окажется под-последовательностью другой, более длинной строки такого вида. Под под-последовательностью здесь подразумевается то, что первая строка будет заключена "внутри" второй под-строки, но необязательно в идущих подряд местах. Например, "121" - подпоследовательность "1121", очевидно, но кроме того, "121" -- под-последовательность "1221", потому что члены "121" можно найти по порядку внутри "1221", хоть и не подряд.

Если для нашей строки x1...xn длиной n окажется, что какая-то из строк вида xi, xi+1, ... , x2*i является под-последовательностью другой более длинной строки вида xк, xк+1, ... , x2*к, то мы скажем, что строка x1...xn является плохой. Если же никакая строка такого вида не является под-последовательностью другой строки такого вида, то исходная строка x1...xn называется хорошей. Например, приведенная в качестве примера строка из 10 символов, очевидно, плохая.

Требуется: доказать, что существует максимальная длина хорошей строки. Найти хорошую строку максимальной длины.

Date: 2002-10-08 04:07 am (UTC)
From: [identity profile] leovas.livejournal.com
Max. строка - 12221111111 (11 знаков). Доказательство - подбором (точнее, перебором дерева последовательностей), что несложно, но скучно.. Или есть красивое доказательство?

Date: 2002-10-08 05:25 am (UTC)
From: [identity profile] avva.livejournal.com
Да, верно. Или зеркальная ей, естественно.

Док-во более красивое есть, но не дающее конкретную строку. Можно доказать, что есть максимальная длина для любого (конечного) алфавита, необязательно из двух букв. Я это сегодня запощу в виде продолжения этой темы (а ещё более интересное будет в третьей части).

Мы с приятелем...

Date: 2002-10-08 09:30 am (UTC)
From: [identity profile] khatul.livejournal.com
...решили эту задачу нынче за обедом. Тоже перебором дерева последовательностей - но, почему-то, скучным не показалось; философический смысл извлекли.

Но все время, пока решали, нам думалось: вот придет кто-то и скажет "а на самом деле это ВОТ ТАК решается" - без перебора (но не длиннее, чем с перебором!). А мы скажем "ааааа....".

Вот и интересно: как?

Re: Мы с приятелем...

Date: 2002-10-08 10:00 am (UTC)
From: [identity profile] avva.livejournal.com
Есть общее доказательство того, что существует максимальная длина, не дающее собственно саму длину или максимальную строку. Довольно элегантное. См. мою последнюю запись.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 01:03 pm
Powered by Dreamwidth Studios