Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм поиска совпадений в словах, нужно больших слов создавать маленькие 
:(
    Опции темы
KycoK
Дата 5.11.2005, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



У меня проблема с разработкой наиболее рационального алгоритма для последущей реализации на си++. В двух словах:

- имеется 8 различных переменных (напр.: a, b, c, d, e, f, g, h)
- из этих переменных задаются различные комбинации по 4 элемента
- из них нужно найти комбинации с 3-мя совпадающими в любой последовательности элементами и выделить совпадающие в отдельную комбинацию по 3 элемента (напр.: acef && achf => acf). Если у какой-либо из комбинаций все элементы совпали или, если у какой-либо из комбинаций вообще ни с кем не оказалось совпадений, то прописать её в получившемся результате полностью, т.е. из 4-рех членов. В дальнейшем эта N-элементная комбинация не сравнивается с (N-1)-комбинациями
- из получившегося результата снова по той же схеме выбирают совпадающие комбинации, но уже по 2-ум совпадениям. Если у какой-либо из комбинаций все элементы совпали или, если у какой-либо из комбинаций вообще ни с кем не оказалось совпадений, то прописать её в получившемся результате полностью
- из получившегося результата снова по той же схеме выбирают совпадающие комбинации, но уже по 1-му совпадению. Если у какой-либо из комбинаций все элементы совпали или, если у какой-либо из комбинаций вообще ни с кем не оказалось совпадений, то прописать её в получившемся результате полностью

smile Помогите начинающему программисту, кто чем может. Не брезговаю и готовыми программами =))
PM MAIL   Вверх
eskaflone
Дата 5.11.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 5.11.2005

Репутация: нет
Всего: 3



на каждую комбинацию заводишь переменнюю байт , совпадения проверять and'ом.
PM MAIL   Вверх
KycoK
Дата 6.11.2005, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Спасибо, но у меня проблема в том, чтобы машина видела не просто комбинацию, а именно 4 эл-та в ней.
PM MAIL   Вверх
Akina
Дата 7.11.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(KycoK @ 6.11.2005, 12:14)
проблема в том, чтобы машина видела не просто комбинацию, а именно 4 эл-та в ней.

Нужно сравнивать не комбинации, а маски вхождения:
Код

for (i=1;i<4;i++)
{
if (num_of_part(n1,i)=num_of_part(n2,i)) then equals(n1,n2)++
}

этот код заполнит тебе матрицу equals, каждый эл-т которой = кол-во совпадений эл-тов в наборах n1 и n2. А далее сколь тебе там надо - 3 совпадения? отбери те, где 3 в equals... надо исключать наборы? обработанные элементы и/или исключенные строки,столбцы помечай как equals(n1,n2)=-1


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KycoK
Дата 7.11.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Извини за мою тупость smile , но не мог бы ты рассказать немного поподробнее об этом способе. Ну чуточку раскрыть тему, так сказать. Потому что си я взялся изучать совсем недавно, и опыта у меня... ну очень мало.
PM MAIL   Вверх
Mit
Дата 7.11.2005, 19:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а если с множеством попробовать
  Вверх
KycoK
Дата 10.11.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



А правда... что если множеством? smile
PM MAIL   Вверх
Mit
Дата 10.11.2005, 10:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











я до конца не понял задание, если можешь, попробуй наглядно объяснить (приведи пример)
  Вверх
Mit
Дата 10.11.2005, 10:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











и вообще то, что ты привел - это и есть задание или твое истолкование
  Вверх
KycoK
Дата 11.11.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



2Mit:
Ну это я немного упростил основное задание, а в принципе ничего не изменилось

smile
PM MAIL   Вверх
KycoK
Дата 11.11.2005, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Ну вот например даны комбинации (из этих же a,b,c,d,e,f,g,h):

abcd, abch, abgd, abgh, afcd, afch, afgd, afgh, ebcd, ebch, ebgd.

От программиста требуется создать программу, которая найдёт 3 одинаковых элемента в этих комбинациях...
/попорядку, т.е. 1ый сравниваем со вторым, потом первый с третим,его же с четвёртым и т.д. Когда первый сравнили со всеми, переходим ко второму и опять начинаем сравнивать (но уже второй) по той же схеме. Так в теории, а на практике можно любым способом сравнивать/
...и создаст новые комбинации по три элемента в каждом, исключая 4-ый, несовпадающий элемент из двух 4-значных комбинаций. и создавая из них одну. трёхзначную

Ну например abcd сравниваем с abch, получаем abc
abcd сравниваем с abgd, получаем abd
abcd сравниваем с abgh, получаем abcd и abgh (если abgh ни с кем не совпадёт, т.е. не найдётся даже одной сходной с ней по трём элементам комбинации, то она переписывается в исходном виде, т.е. четырёхзначной. abcd итак уже совпала с двумя комбинациями, поэтому ей это не грозит)
abcd & afcd = acd
abcd & afch = afch
abcd & afgd = afgd
abcd & afgh = afgh
abcd & ebcd = bcd
abcd & ebgd = ebgd
abch & abgd = abgd
abch & abgh = abh
abch & afcd = afcd
abch & afch = ach
abch & afgd = afgd
abch & afgh = afgh
abch & ebcd = ebcd
abch & ebch = bch
abch & ebgd = ebgd
abgd & abgh = abg
и т.д...

Ну вот как-то так
Вообще, я это дело столько раз делал на бумаге, поэтому могу предоставить перечень того, что с чем сокращается.

Ну.. уловил суть?
PM MAIL   Вверх
KycoK
Дата 13.11.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



По идее всего комбинаций - 16 (когда по 4)
по 3 - 8
по две - 4

А сама прогамма изначально должна была запрашивать ввод числа n - число элементов в комбинации. Вотъ smile
PM MAIL   Вверх
KycoK
Дата 15.11.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Может у кого возникливопросы по формулировке задания? Или ещё что
Я выложу что у меня на данный момент имеется

Это сообщение отредактировал(а) KycoK - 2.12.2005, 18:54
PM MAIL   Вверх
KycoK
Дата 2.12.2005, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Программа уже исправно ищет и генерирует матрицу из n=3 в n=2
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.