2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Задача про палиндром
Сообщение28.12.2022, 00:10 


31/05/22
267
Здравствуйте, не знаю, можно ли такие задачи кидать на этом форуме, но вроде как вполне сходит на дискретную математику. Задача такова: Палиндромом называется строка, которая одинаково читается слева направо и справа налево. Рассмотрим некоторую строку $S$, состоящую из маленьких латинских букв. Какое минимальное количество букв (возможно нуль) нужно в ней удалить, чтобы она не являлась палиндромом? Предложите алгоритм решения задачи, докажите его корректность, оцените трудоемкость. Трудоёмкость состоит в O(n). Просто сравниваем с двух концов и ближе к центру, и ищем не равные символы. Мой вопрос в том, чтобы узнать, в чём сложность этой задачи? Если у кого то есть опыт в таких задачах, то расскажите, может я слишком плохой способ дал?

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 00:47 
Заслуженный участник
Аватара пользователя


16/07/14
9151
Цюрих
Задача нормальная, ваше решение непонятно. Нам же нужно не проверить, является ли строка палиндромом, а удалить из неё что-нибудь, чтобы перестала являться.

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 00:49 


31/05/22
267
Верно, любой палиндром можно сделать не таковым либо за либо 1 убирание, либо вообще нельзя(где все одинаковые)

-- 28.12.2022, 00:52 --

А вот это одно убирание, если идущие друг за другом символы не равны. И вот за O(n) проверяем эту штуку. Правда для начала так же за O(n) проверим, палиндром ли это вообще, сравнивая с двух концов символы.

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 06:39 


12/07/15
01/12/24
3317
г. Чехов
Надо найти минимальное число удалений и доказать корректность алгоритма.

Может надо не с конца, а из середины палиндрома начать?

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 08:21 
Заслуженный участник
Аватара пользователя


21/11/12
1968
Санкт-Петербург
Mihaylo в сообщении #1575292 писал(а):
... из середины палиндрома начать?
Из середины как раз максимальное количество имеем, поскольку без центрального знака (на оси симметрии или по соседству) палиндром остается палиндромом: $aba \rightarrow aa;\ \ abba \rightarrow aba.$
Maxim19 в сообщении #1575277 писал(а):
... либо вообще нельзя(где все одинаковые)
В числах — репьюниты. Вот если их исключить, то одного удаленного крайнего знака достаточно. Для доказательства надо разделить палиндромы на четные (по количеству знаков) и нечетные. В центре нечетного п. репьюнит из нечетного кол-ва знаков, как минимум из одного. В центре четного п. репьюнит из четного кол-ва знаков, как минимум из двух. При удалении крайнего знака четность меняется, а репьюнит в центре симметрии остается прежним: $aba \rightarrow ab;\ \ abba \rightarrow abb.$

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 09:26 


12/07/15
01/12/24
3317
г. Чехов
Andrey A в сообщении #1575297 писал(а):
Из середины как раз максимальное количество имеем

Вы не поняли. Находим середину палиндрома в строке, двигаясь от середины строки.
Возможно доказательством корректности будет доказательство того, более удаленные от середины строки серединки палиндрома будут менее оптимальными.
(Не путать середину строки с серединой палиндрома. В общем случае это не одно и то же.)

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 12:37 
Заслуженный участник
Аватара пользователя


21/11/12
1968
Санкт-Петербург
Maxim19 в сообщении #1575269 писал(а):
Рассмотрим некоторую строку $S$ , состоящую из маленьких латинских букв. Какое минимальное количество букв (возможно нуль) нужно в ней удалить, чтобы она не являлась палиндромом?
Я и теперь не понимаю. Вчитайтесь в свой вопрос, именно на него я и ответил. Если бы было написано "Какое минимальное количество букв (возможно нуль) нужно в ней удалить, чтобы она не содержала ни одного палиндрома?" — это был бы, конечно, другой вопрос.

P.S. Возможно, имелось в виду удалить знаки без предварительного анализа, но тайно или явно анализировать все равно придется, или же надо удалять все знаки. Самое простое — тест на палиндром. При отрицательном результате удалять не нужно ничего, в противном случае — то что я написал.

 Профиль  
                  
 
 Re: Задача про палиндром
Сообщение28.12.2022, 16:37 


12/07/15
01/12/24
3317
г. Чехов
Упс. Перепутал два варианта: "чтобы не являлась палиндромом" и "чтобы являлась палиндромом".
Я второй вариант рассматривал, и он более интересный.
Первый вариант банален. Пользуемся определением палиндрома: просто проверяем на палиндромность и в зависимости от этого изменяем 0 или 1 символ.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group