Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 05.10.2006, 19:10   #31   
МАНИАК
 
Сообщений: 1,140
Регистрация: 01.06.2005
Возраст: 44

I&F вне форума Не в сети
кста.. второй вариант лучше рассмотреть ;-)
  Ответить с цитированием
Старый 05.10.2006, 19:15   #32   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
Цитата:
Сообщение от I&F
кста.. второй вариант лучше рассмотреть ;-)
Это тот где сравниваются рядом стоящие элементы? ну по моему при n->N вероятность удаления элемента ->0. Или я и тут где-то торможу?
Да и собственно на следующем шаге такое сравнение будет сделано неявно и так и так.
  Ответить с цитированием
Старый 05.10.2006, 19:21   #33   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
Maximus007, Ого, смелое заявление. Ну ради такого дела считайте что можете получить все байты любого объекта(правда кол-во таких байт ничем не лимитировано)!!!
  Ответить с цитированием
Старый 05.10.2006, 19:27   #34   
error #65535
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
Цитата:
Сообщение от MadFish
Ну ради такого дела считайте что можете получить все байты любого объекта(правда кол-во таких байт ничем не лимитировано)!!!
бля. ну и сделайте хэш.

кстати, насчет того о чем вам I&F полстраницы объяснял - один и тот же элемент нужно было сравнивать сначала с первым, потом с последним. очевидное уменьшение цикла в 2 раза
  Ответить с цитированием
Старый 05.10.2006, 19:32   #35   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
maximn, тыгдым...., опять за рыбу деньги... Приведите мне хоть одну нормальную хеш функцию которая будет мне давать внятный разброс и внятное время построения хеш значения при не фиксированном размере элементов. Жду!!!

во первых вы не поняли объяснения господина I&F. Не один и тотже элемент сравнивать с первым и последним а два разных элемента первый и последний сравнивать с рядомстоящими итп.
по поводу уменьшения в 2 раза еще не все так просто. Это работает во первых только при неравенстве первого элемента последнему, иначе таже фигня. А вот на сколько уменьшается нужно еще посчитать.
  Ответить с цитированием
Старый 05.10.2006, 19:38   #36   
error #65535
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
я не знаю почему, но форумец MadFish меня раздражает.
  Ответить с цитированием
Старый 05.10.2006, 19:39   #37   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
maximn, это Ваши личные трудности.
  Ответить с цитированием
Старый 05.10.2006, 19:41   #38   
error #65535
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
я понял почему - глупые люди всегда меня раздражают
  Ответить с цитированием
Старый 05.10.2006, 19:51   #39   
Tenshi Tech
 
Аватар для Maximus007
 
Сообщений: 406
Регистрация: 25.12.2003

Maximus007 вне форума Не в сети
если нельзя отсортировать по каким нить параметрам то количество операций сравнений будет лежать в пределах N-1 < O < (N-1)*(N-1)/2
N-1 - если все объекты одинаковы
(N-1)*(N-1)/2 - если все объекты разные
решение пост №17, чтобы уменьшить число операций сравнений нужно сортировать иначе никак или использовать какие-нибудь ньюансы системы о которой идет речь.
Можно отсортировать по размеру занимаемой объектами памяти, сформировать группы и производить поиски внутри групп.
  Ответить с цитированием
Старый 06.10.2006, 08:40   #40   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
Maximus007, Абсолютно согласен с Вашей оценкой для алгоритма №№3,17 (ту же самую оценку я привел в посте №14, только более развернуто). Но неужели нет более быстрого алгоритма? Например, господин I&F, предлагал просматривать массив с двух концов. Я пока не уверен, что это даст выигрыш (не было у меня времени оценить сложность данного алгоритма), но на первый взгляд прирост скорости должен быть.
А на счет сортировки - это затруднительно. Возвращаясь к моей аналогии с картинками одинакового размера, на которых может быть изображено все что угодно, не вижу критериев для сортировки или группировки...
  Ответить с цитированием
Старый 06.10.2006, 09:09   #41   
МАНИАК
 
Сообщений: 1,140
Регистрация: 01.06.2005
Возраст: 44

I&F вне форума Не в сети
блиниииннн.. ну скажите счто я тупой а?
Я вторым вариантом предлагал не соседние сравнивать, а брать последовательно элементы и сравнивать с оставшимися перед ним
таким образом каждый элемент придется сравнивать с конечным числом превидущих уже прореженых на совпадения элементов
  Ответить с цитированием
Старый 06.10.2006, 09:15   #42   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
Цитата:
Сообщение от I&F
блиниииннн.. ну скажите счто я тупой а?
Ни в койм случае господин, I&F!!! Это скорее я неправильно Вас вчера понял. Приношу свои извинения(вечер, конец рабочего дня...)!!! А по поводу Вашего предложения, то оценка сложности тут будет явно хуже (этот алгоритм пришел мне на ум в самом начале, когда передо мной встала эта проблема, я делал оценку его сложности, и если Вас интересует, могу ее привести).
Сейчас я занимаюсь оценкой Вашего предложения просматривать массив с двух сторон. Если у Вас уже есть готовые выкладки, не поделитесь ли ими со мной?
  Ответить с цитированием
Старый 08.10.2006, 10:49   #43   
Форумец
 
Аватар для mozg1986
 
Сообщений: 694
Регистрация: 02.08.2006
Возраст: 38

mozg1986 вне форума Не в сети
Как вариант, можно разбить весь массив на несколько более медких и искать одинаковые элементы сначала в них, а потом одинаковые в получившихся после первого прохода. Не знаю почему, но такое разбиение в моем случае дало очень ощутимый прирост в скорости. задача была таже, искал как описал в посте #17 плюс вышенаписанный финт ушами.
  Ответить с цитированием
Старый 09.10.2006, 08:33   #44   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
to I&F, И все-таки Гн. I&F, я был прав, вариант с просмотром массива с двух сторон не принесет значимого прироста в скорости по сравнению с алгоритмом №№3,17.
Пусть в нашем массиве элемент А это начальный, а элемент В конечный. А a и b соответственно удаляемые элементы на i том проходе. Рассмотрим случай, когда удаляются по 1 элементу. При таком условии, единственный вариант, который принесет выигрыш в скорости на 1, это когда a и b находятся в своих половинах массива (а вероятность этого 25%) .Если a и b в хвосте выигрыш 0.(улучшение для b нейтрализуется лишним сравнением B c a). Если a и b вначале 0(A и b и так уже сравнили) . a и b не в своих половинах – ухудшение на 1(лишнее сравнение B с a).При бОльшем кол-ве удаляемых элементов, шанс улучшится еще меньше…
mozg1986, врятли Ваш метод может дать улучшение скорости... Ведь у нас не сортировка... (то что не найдено совпадений в какой-то части массива не означает что любой элемент из этой части не повторяется во всем массиве. т. е в любом случае придется делать полный проход по массиву...) Хотя если объеденить Вашу идею и идею Гн. I&F о просмотре массива с двух концов может что-то и получится... Хотя надо еще подумать...

Вопрос все еще открыт....
  Ответить с цитированием
Старый 16.10.2006, 01:00   #45   
Форумец
 
Сообщений: 115
Регистрация: 23.05.2005
Возраст: 38

Forrest вне форума Не в сети
Не очень силен в сортировке, но со своего опыта программирования могу посоветовать сортировать объекты по косвенным признакам (размер, какие-то "особые точки" и т.п.)

Первое же, что нашел в в яндексе:

http://fantom-lab.narod.ru/Python/Le...3/002-3-03.htm

А вообще, в яндексе или гугле много интересных ссылок по запросу "Метод сортировки разнородных"
  Ответить с цитированием
Старый 16.10.2006, 08:20   #46   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
to Forrest, две картинки изображающие яблоко но разного размера все равно будут одинаковыми... Смысла в сортировке по размеру (да и вообще в сортировке в данном случае)не вижу...
  Ответить с цитированием
Старый 25.10.2006, 14:51   #47   
Форумец
 
Аватар для OTTO
 
Сообщений: 200
Регистрация: 13.09.2004

OTTO вне форума Не в сети
))))))))
  Ответить с цитированием
Старый 28.10.2006, 10:41   #48   
Форумец
 
Аватар для mozg1986
 
Сообщений: 694
Регистрация: 02.08.2006
Возраст: 38

mozg1986 вне форума Не в сети
Цитата:
Сообщение от MadFish
mozg1986, врятли Ваш метод может дать улучшение скорости... Ведь у нас не сортировка... (то что не найдено совпадений в какой-то части массива не означает что любой элемент из этой части не повторяется во всем массиве. т. е в любом случае придется делать полный проход по массиву...) Хотя если объеденить Вашу идею и идею Гн. I&F о просмотре массива с двух концов может что-то и получится... Хотя надо еще подумать...
Вопрос все еще открыт....
Я этот алгоритм использовал как раз не для сортировки, а для "склеивания" точек с одинаковыми координатами у 3D объектов после импорта из .3ds и алгоритм замечательно работает. Бегать по всему массиву все равно придется, как не крути.
  Ответить с цитированием
Старый 30.10.2006, 08:40   #49   
Форумец
 
Аватар для MadFish
 
Сообщений: 340
Регистрация: 25.07.2002

MadFish вне форума Не в сети
to mozg1986, Но даже если просто логически рассуждать... пусть имеются две подпоследовательности {1;2;3;4;5} и {1;2;3;4;5}. по Вашему алгоритму проверим сначала первую, за тем вторую, а вот уж за тем весь массив(тогда и будут удаляться дубликаты) -кол-во сравнений увеличили вдвое, а результат тот же... Негодится...

Выходит, что быстрее автомата с N сенсорами и одной читающей головкой на всех(который мы придумали в постах №3,17) ничего нет... В инете не нашел... Если кто, че придумает, буду крайне признателен.
  Ответить с цитированием
Старый 30.10.2006, 16:18   #50   
Форумец
 
Сообщений: 2,159
Регистрация: 15.01.2003

Akad вне форума Не в сети
MadFish, конечно нет другого алгоритма. Есть только вариации этого. Количество переборов будет всегда одинаково.
Единственное что еще могу посоветовать - если размеры в байтах объектов не большие, то стоит их анализировать небольшими группами, что бы они все в процессорный кэш залетали. Скорость должна сильно возрасти.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind