|
|
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
Для определённых случаев сортировка за линейное время осуществима, но хочется узнать, что бы дало в принципе такое уменьшение времени, ведь даже log(1 000 000 000 000) не так велик. Даже для тех задач, которые я решал, было значительное отличие при замене сортировки пузырьком на быструю сортировку, но там мы заменяли N * Т на N * log(N), а произойдёт ли что-то революционное(решатся какие-то нерешаемые ранее из-за времени задачи, появятся новые алгоритмы, благодаря которым в нашей повседневности или хотя бы в некоторых профессиях появятся сильно упрощающие жизнь системы), если мы уберём log(N) и научимся волшебным образом сортировать числа за N действий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 09:42 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
baden_baden, Ну, во-первых, этот "волшебный" способ был бы интересен сам по себе. Если правильно помню, возможность сортировки быстрее O(N*lnN) означает достаточно странные вещи (у Скиены были рассуждения на эту тему, доберусь до дома - напишу подробнее). А во-вторых, это означает ускорение многих других алгоритмов. NP-задачи, насколько помню, так и останутся NP, но открытие будет очень приятное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 11:18 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
ващет сложность квик сорт = O(N^2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 13:08 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
rt5858ващет сложность квик сорт = O(N^2)В худшем случае. O(N*lnN) в среднем. Возьмите пирамидальную - будет и в худшем O(N*lnN). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 13:10 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
AbstractionВ худшем случае. O(N*lnN) в среднем. да я это знаю.. эх ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 13:29 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
Исправляюсь: сортировка за O(N) без дополнительных предположений о сравниваемых элементах невозможна. Обсуждение вопроса содержится в книге С. Скиены, "Алгоритмы: руководство по разработке", 4.7.1, также 9.2.1. Кратко: существует n! перестановок элементов, каждое сравнение сокращает число перестановок не более чем вдвое, требуется прийти к единственной перестановке => требуется минимум O(ln(N!))=O(N*lnN) операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 23:09 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
baden_badenДля определённых случаев сортировка за линейное время осуществима, но хочется узнать, что бы дало в принципе такое уменьшение времени, ведь даже log(1 000 000 000 000) не так велик. Даже для тех задач, которые я решал, было значительное отличие при замене сортировки пузырьком на быструю сортировку, но там мы заменяли N * Т на N * log(N), а произойдёт ли что-то революционное(решатся какие-то нерешаемые ранее из-за времени задачи, появятся новые алгоритмы, благодаря которым в нашей повседневности или хотя бы в некоторых профессиях появятся сильно упрощающие жизнь системы), если мы уберём log(N) и научимся волшебным образом сортировать числа за N действий? Таких постановок практически нету. Если вы сортируете вектор целых чисел то: 1 000 000 000 000 / 2^32 = / 4 294 967 295 = 232 Какова кардинальность? Каждое число диапазона целых при равномерной гистограме встречается в выборке 232 раза! Учитывая специфику предметной области я утверждаю что линейных гистограмм практически не бывает. Поэтому проще подсчитывать подсчётом (1 проход!) и выводить результат. Это для чисел. Если вы сортируете набор строк в БД то их никто не сортирует а строят индекс и по нему извлекают. Сортировка - это очень тяжёлый алгоритм с очень малым КПД и малым полезным эффектом в принципе! Данные выгоднее поддерживать с сортированных структурах а не сортировать на каждый чих! Из-за этого мы имеем непонимание студентами принципов оптимизации. Студент оптимизирует "не то" и "не там" и не смотрит в корень постановки. И еще раз. Таких постановок не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2012, 23:49 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
maytonЕсли вы сортируете набор строк в БД то их никто не сортирует а строят индекс и по нему извлекают.Настолько нелепо, что даже спорить не хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:34 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
Из контекста понятно что я говорю о 1 000 000 000 000 словах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:36 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
mayton, Не очень. Сформулируйте, плиз, фразу про сортировку строк более развернуто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:41 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
miksoft, придумай постановку где тебе "вне DBMS" нужно сортировать 10^12 слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 00:54 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
mayton, А причем тут "вне DBMS"? в той фразе было "в БД". Хотя если очень хочется - пожалуйста. У меня один знакомый сортировал фрагменты органических молекул (атом конкретного элемент кодируется соответствующей буквой). Размер не помню, но на HDD трех-четырехлетней давности влезала только одна такая коллекция (т.е. сотни Гб). И у него была задача быстрого поиска по этой коллекции по началу цепочки. Т.е. в терминах SQL это была операция поле LIKE 'строка%' . Ну так вот по отсортированной коллекции в плоском файле с небольшим самопальным индексом у него поиск работал в разы быстрее, чем MS SQL c аналогичной коллекцией в таблице. Одна беда - софт, который генерил эту коллекцию, умел выгружать ее только целиком. В итоге сортировать ее заново было проще и быстрее, чем пытаться найти изменения и вставить их в ту же таблицу в MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 01:17 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
miksoft, для сортировки этой сотни гигабайт ему нужен был как минимум еще пара таких дисков. +Merge sort. Дальше не скажу нужна статистика по данным. Что. Чего. Сколько. Какая средняя длина элемента e.t.c. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2012, 01:40 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
I/O-сопроцессоры, математические сопроцессоры, графические сопроцессоры... ждем аппаратного БДшного сопроцессора (около-мгновенная сортировка/поиск/фильтрация непосредственно в памяти, а дальше и на носителях), ну и чуть позже приход алгоритмического сопроцессора. В результате в повседневной жизни появится сильно упрощающая жизнь кнопка "Сделать всё как надо" и не надо будет думать о каких-то там алгоритмах чего-то там.. Да и вообще, думать не надо будет.. P.S. Сорри, наболело.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 01:56 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
ЧотакактаI/O-сопроцессоры, математические сопроцессоры, графические сопроцессоры... ждем аппаратного БДшного сопроцессора (около-мгновенная сортировка/поиск/фильтрация непосредственно в памяти, а дальше и на носителях), ну и чуть позже приход алгоритмического сопроцессора. В результате в повседневной жизни появится сильно упрощающая жизнь кнопка "Сделать всё как надо" и не надо будет думать о каких-то там алгоритмах чего-то там.. Да и вообще, думать не надо будет.. В подобной технике нельзя что-то одно ускорить с стотыщпитсот раз и оставить при этом без изменения всё остальное. Если даже предположить что существует процессор иммитирующий работу DBMS-Oracle то его узким местом мгновенно станет память. Надо будет ее ускорять во столько-же раз. Вобщем придём к тому что закон Мура уже не действует (старик Гордон ухмыляется) и надо форсировать параллелизм. А его уже давно форсируют строя кластеры. А кластеры само по себе решение дешевле чем строительство новых процессоров. Ведь перезалить софт стоит в тыщи раз дешевле чем изготовить новый процессор. Нужно форсировать неисследованные идеи. К примеру вообще отказаться от принципа трех-уровневой памяти и ввести еще парочку уровней. Создав тем самым много слоёв кеширования и отказавшись от дорогостоящей DDR3 как от основной и от магнитного диска. Новые процессоры на аналоговых имплементациях нейросетей. Новые типы устройств хранения (без энергопотребления вообще). Вспомогательные процессоры для логических машин типа Lisp, для быстрой символьной логики и ФП. Игровые процессоры графики больше не развивать. И так бесполезная трата энергии. А вот физику - форсировать. Дело полезное и не только в играх но и в науке. Исследовать био-технологии процессоры не на основе кремния а на основе живых структур и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 02:21 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
maytonЧотакактаI/O-сопроцессоры, математические сопроцессоры, графические сопроцессоры... ждем аппаратного БДшного сопроцессора (около-мгновенная сортировка/поиск/фильтрация непосредственно в памяти, а дальше и на носителях), ну и чуть позже приход алгоритмического сопроцессора. В результате в повседневной жизни появится сильно упрощающая жизнь кнопка "Сделать всё как надо" и не надо будет думать о каких-то там алгоритмах чего-то там.. Да и вообще, думать не надо будет.. ...скип... Нужно форсировать неисследованные идеи. ...скип... Тут главное не забыть бы, что "столица автоматически переходит в Васюки." (с) Остап Ибрагимович... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 11:43 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
maytonНовые типы устройств хранения (без энергопотребления вообще). Вспомогательные процессоры для логических машин типа Lisp, для быстрой символьной логики и ФП. Игровые процессоры графики больше не развивать. И так бесполезная трата энергии. А вот физику - форсировать. Дело полезное и не только в играх но и в науке. Исследовать био-технологии процессоры не на основе кремния а на основе живых структур и т.п. Как устройства хранения без энергопотребления могут ускорить вычисления? Почему вспомогателные процессоры для языков типа Лиспа, а не Дракона например. Или машину Тьюринга имели ввиду? Игровые процессоры не развивать. Но ведь их используют для вычислений (та же Суба). Физику форсировать как? В теорию относительности перевести к субсветоваым скоростям? У биотехнологий процент адекватного решения стремится к 100% но не раывен 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:12 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
KhodКак устройства хранения без энергопотребления могут ускорить вычисления? Есть разные пути ускорения расчётов. Часть из них основаны на том что ты повышаешь скорость АЛУ и наращиваешь количество ядер. Но иногда есть предел. (Элементарно денег не хватит). Есть и другой подход. В общем случае это мемоизация. Почитай на тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:38 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
KhodПочему вспомогателные процессоры для языков типа Лиспа, а не Дракона например.Или машину Тьюринга имели ввиду? Не обязательно Лиспа. Любую машину символьной логики которая активно использует не классическую (плоскую) модель памяти с ячейками а модель на ассоциаций и деревьев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:40 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
KhodИгровые процессоры не развивать. Но ведь их используют для вычислений (та же Суба). Их слабо используют. И их API и фреймворки запилены только под рендеринг графики. И они узко-специализированные. Набор команд - неуниверсальный. То что из запилили под некоторые расчётные алгоритмы это просто забавный технический казус. Но если-бы цель стояла просто поднять перформанс основного CPU для расчётов математики то никто-бы не ставил себе на борт игровые видяшки а вкладывались бы в большее количество обычных штатных CPU на одной motherboard. И то что красноглазики и технофрики считают Raibow tables на видяшках это тоже забавных техничекий казус. Это не системый подход. Это воля случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 17:58 |
|
||
|
Произошёл бы какой-нибудь прорыв, если макс. время сортировки уменьшить с N * log(N) до N?
|
|||
|---|---|---|---|
|
#18+
KhodУ биотехнологий процент адекватного решения стремится к 100% но не раывен 100%. Ты очень сильно удивишся но системы распознающие лицевые образы, отпечатки пальцев штрих и QR-коды всегда выдают вероятностный ответ или выдают множество эталонных образов попадающих в допустимую группу совпадений. (То что не видишь на экране этих критериев просто говорит о том что разработчих их от тебя стыдливо скрыл и не показывает). Другого метода брадт, еще не создали ни на кремниях ни на биотехнологиях. P.S. А биотехнологии просто могли-бы быть дешевле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2013, 18:01 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38110189&tid=1341963]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 331ms |

| 0 / 0 |
