|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Jump Search псевдокод из учебника по Алгоритмам и Структурам данных Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
я думаю, что алгоритм в учебнике реализован не верно, что думаете вы? https://en.wikipedia.org/wiki/Jump_search :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 23:27 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Я думаю, что неплохо привести пример, результат прогона и на ЯП. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:50 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Бремя доказательства - на утверждающем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:57 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
насколько я понимаю, Jump Search - это про задачу с небоскребом и 2 шариками, где надо выяснить, с какого этажа шарик разбивается. То есть для минимизации худшего случая брать sqrt(N) не совсем верно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:05 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
выше я привела ссылку на алгоритм из Вики. вот что пишет автор учебника: автор учебникаWhen we have an already sorted list, then the other efficient algorithm to search for a value is jump search or block search. In jump search, it is not necessary to scan all the elements in the list to find the desired value. We just check an element and if it is less than the desired value, then some of the elements following it are skipped by jumping ahead. After moving a little forward again, the element is checked. If the checked element is greater than the desired value, then we have a boundary and we are sure that the desired value lies between the previously checked element and the currently checked element. However, if the checked element is less than the value being searched for, then we again make a small jump and repeat the process. Once the boundary of the value is determined, a linear search is done to find the value and its position in the array. For example, consider an array a[] = {1,2,3,4,5,6,7,8,9} . The length of the array is 9. If we have to find value 8 then following steps are performed using the jump search technique. Step 1: First three elements are checked. Since 3 is smaller than 8, we will have to make a jump ahead Step 2: Next three elements are checked. Since 6 is smaller than 8, we will have to make a jump ahead Step 3: Next three elements are checked. Since 9 is greater than 8, the desired value lies within the current boundary Step 4: A linear search is now done to find the value in the array. имхо, автор забыл, что нужно "прыгать" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:50 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
у меня наблюдение: к концу книги становится все больше и больше опечаток (т.е. получается, что до конца дочитывают немногие) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:53 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Про книгу не знаю. А "про задачу с небоскребом и 2 шариками" мы зде же как-то решали на горизонте 1 - 1,5 года. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 17:44 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab имхо, автор забыл, что нужно "прыгать" почему? первый цикл - прыгает второй цикл - linear search все в соответствии с процетированым английским текстом не очень понятно, зачем это нужно (когда есть двоичный поиск), ну это уже другой разговор ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 17:49 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Техническое обоснование wikiThe advantage over the latter is that a jump search only needs to jump backwards once, while a binary can jump backwards up to log n times. This can be important if a jumping backwards takes significantly more time than jumping forward. Я себе понимаю так. У нас есть некое техническое устройство со специфичными характеристиками доступа. Например. Магнитная лента на катушке. Стриммер. Проволока на катушке (в авиационном самопицсе). И для нее есть операции которые делаются быстро (перемотка вперед с поиском метки) и очень медленно (поиск назад по меткам такими рывками). И вот данный алгоритм оптимизирует дорогие операции уменьшая их до гарантированой 1 штуки на сеанс. Ну а наша юная сишница еще не знакома с такой техникой... да и не будет никогда знакома. Вот у нее и возникают разные вопросы. Вообще если читать Дональда Кнута (очень нудное времяпровождение) там будут отсылки к виртуальному вычислителю MMIX и к накопителям на лентах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 18:03 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, в том-то и дело, что нет: прыжок происходит только один раз в sqrt(n). по идее прыжки в первом цикле должны происходить пока мы не наийдем нужное значение или число большее, чем искомое. Вот что происходит в алгоритме из учебника *) рассмотрим массив a[] = {0,1,2,3,4,5,6,7,8,9} и пусть искомое число будет 8 (как в примере) *) low = 0; high = 8; step = 3; i = 0 *) Jump Loop: 1) i = 0 < step = 3 -> True val = 8 < arr[step] = arr[3] = 3 -> False low = step + 1 = 3 + 1 = 4 i = i + 1 = 0 + 1 = 1 2) i = 1 < step = 3 -> True val = 8 < arr[step] = arr[3] = 3 -> False low = step + 1 = 4 i = i + 1 = 0 + 1 = 2 3) i = 2 < step = 3 -> True val = 8 < arr[step] = arr[3] = 3 -> False low = step + 1 = 4 i = i + 1 = 0 + 1 = 3 4) i = 3 < step = 3 -> False -> we exit the loop low = 3 и дальше мы с помощью линейного поиска проверяем все позиции от arr[3] до arr[9] в поисках нужного знчения это неверно, и это не то, что должен делать JumpSearch, обратите внимание на количество операций нужное для реализации алгоритма (их 10, т.е фактически это не лучше, чем линейный поиск!) в вики, например, все происходите следующим образом (и это правильно): Код: plaintext 1. 2. 3. 4. 5.
и прыжки длиной в sqrt(n) происходят до тех пор, пока val не станет больше или равно arr[high] или пока low не станет больше чем n. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:04 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Исходник и пример с результатом в студио! Хоть на барсике. Ангийские слова, да и другие тоже, не всегда однозначно переводятся на ЯП. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:31 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
exp98, в книге только псевдокод. и свой код нужно писать по псевдокоду. (у меня нет проблем с написанием кода по псевдокоду, проблема в том, что я думаю, что псевдокод не верен) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:43 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab exp98, в книге только псевдокод. и свой код нужно писать по псевдокоду. (у меня нет проблем с написанием кода по псевдокоду, проблема в том, что я думаю, что псевдокод не верен) Не надо думать. Пиши модульный тест который подтверждает что твой код имеет такие-то и такие-то свойства на рандомных исходных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:46 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Вот да, в данном случае надо стать компилятором/интерпретатором ... как бы это ни было противно. Мне, например, это делать противно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:53 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, тут модульный тест не поможет :) т.к. даже "неправильный" алгоритм найдет число в массиве (если оно там есть), и не найдет, если его там нет. некорректность алгоритма можно доказать а) методом подсчета шагов цикла (это можно сделать прямо в псевдокоде) б) сравнив ран-тайм "верного" алгоритма с ран-таймом алгоритма из книги (например, мы можем принять алгоритм из вики за "верный") ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 19:59 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
ну exp98, в данном случае это необходимо, потому что речь идет о корректности/некорректности логики решения (сначала планируем - потом пишем) :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 20:07 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab в данном случае это необходимо, Что до меня, я лично сначала решил, что в книге алгоритм, к-рый даёт ош поиска. Тогда д.б. пример на эту ошибку. Теперь же я не понимаю, о чём речь? То ли обошибочном поиске? То ли авторский код не соответствует его же декларации. Но формализованной! То ли авторский код не соответствует викишной декларации, но ищет правильно. То ли скорость просто не та?.. ... Лично мне всё равно. В книгах нередки и ошибки , и опечатки, я тоже сталкивался. Из книги нельзя копи-паст без отладки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 20:24 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab mayton, тут модульный тест не поможет :) т.к. даже "неправильный" алгоритм найдет число в массиве (если оно там есть), и не найдет, если его там нет. Там-же критерий есть. Я-же говорил как о тестировании свойства алгоритма. Как property-based testing. Вот у него должно быть свойство. На любых данных - дает не более 1 прыжка назад. Вот и проверяй. Затолкни в него миллион рандомных данных. А ты как хотела? Заглянуть честным взглядом в глаза? И пообещать что алгоритм правильный? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 23:07 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, вопрос адресован в первую очередь к тем кто может понять псевдокод и сравнить с кодом приведенным в Вики ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 11:02 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
зачем 3 шаг повторять, если переменная STEP не меняется? что-то забыто, в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 11:18 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab к тем кто может понять псевдокод ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 11:46 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Имя пользователя1, да обыкновенно, беру книгу и читаю, а если что-то непонятно, спрашиваю на sql.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:23 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Имя пользователя1тут какая-то непонятная хрень. зачем 3 шаг повторять, если переменная STEP не меняется? что-то забыто, в общем. с этим я согласна ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:35 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Начните переводить потихоньку на С++ с комментариями. И все прояснится. P.S. Язык определяет сознание. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:39 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Копи-пасты - они такие копи-пасты. Возможно, что автор хотел здесь Код: vbnet 1.
написать A[i]. Но тогда и массив должен с 0 начинаться. Но я сильно не всматривался, так что могу и ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:52 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton Язык определяет сознание. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:53 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
При адаптации алгоритмов из книжек я замечал что многие из них написаны на диалектах Pascal/Modula/Delphi. И в этих языках массивы могут начинаться не с 0 а с 1 и это создает некоторые трудности при механическом переводе. В данном диалекте массивы какие? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:12 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
exp98 mayton Язык определяет сознание. Да вот как написано - так программист и переведет. Кстати даже такой пустяк как извлечение квадратного корня с округлением в нижнюю сторону у меня вызывает некую оторопь и размышления? Мы можем потерять в точности конвертируясь int->double->sqlrt->int или не имеем права? Казалось-бы пустяк но мне этот пустяк тоже интересен. Вобщем математики-теоретики вам написало код без типов данных. И без контрактов. А вы уже дальше думайте. Казнить или помиловать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:14 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Кстати, в 1-м цикле может нужно было написать SET LOW = STEP + iiiii и т.п. Но мне откровенно неохота. Не забыть, что пользуемся упорядоченным массивом - это во первых словах автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:21 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton Да вот как написано - так программист и переведет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:22 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Меня вообще удивляет что мы тратим так много времени на старый и никому не нужный алгоритм поиска блоков на магнитофонной ленточке. Неужели автору нет дела до других (более актуальных) алгоритмов и структур данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:27 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Писала же - у неё есть план. Всё же это и полезная гимнастика. Я для этих упражнений откровенно ржавею. Так что небольшая встряска. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:48 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton Неужели автору нет дела до других (более актуальных) алгоритмов и структур данных? существует всего 4 основных алгоритма поиска: 1) линейный поиск 2) двоичный поиск 3) поиск методом интерполяции 4) прыжковый (пошаговый) поиск (Jump Search) у меня проблема возникла только с методом 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 14:35 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
А хеш-поиск? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 14:39 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton А хеш-поиск? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 14:41 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, хэш поиск = поиск по хэш ключу + линейный поиск поиск по хэш ключу будет проведен по одному из 4х методов ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 14:56 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab хэш поиск = поиск по хэш ключу + линейный поиск ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 15:00 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Чтобы не открывать новуютему, спрошу здесь. Есть фрагмент и некий комментарий к нему. Чего я не понимаю? mini.weblab в вики, например, все происходите следующим образом (и это правильно): Код: plaintext 1. 2. 3. 4. 5.
и прыжки длиной в sqrt(n) происходят до тех пор, пока val не станет больше или равно arr[high] или пока low не станет больше чем n. Разве val не константа? Если val < arr[high] затем мы прибавляем low = high + 1; .... а) подразумевается убывающее упорядочивание. б) А где обрабатывается случай val == arr[high] ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 15:46 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab mayton, хэш поиск = поиск по хэш ключу + линейный поиск поиск по хэш ключу будет проведен по одному из 4х методов Мисс mini.weblab! Мой комментарий касался утверждения о том что существует всего 4 основных алгоритма поиска: Я не знаю почему их всего 4. И почему алгоритм хеширования вдруг сюда не попал. Разве поиск ключа в хеш-таблице это не поиск? Разве вероятностная проверка в бит-карте Блума это не поиск? А вычисление квадратного корня? Разве это не поиск точки на вещественной оси? А градиентный спуск это не поиск? А обучение нейронной сети - разве это не поиск ее матрицы коэффициентов? А генетический алгоритм? Разве это не поиск наилучшего вектора признаков по заданной целевой функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 15:50 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
exp98 и прыжки длиной в sqrt(n) происходят до тех пор, пока val не станет больше или равно arr[high] или пока low не станет больше чем n. Разве val не константа? Если val < arr[high] затем мы прибавляем low = high + 1; .... а) подразумевается убывающее упорядочивание. б) А где обрабатывается случай val == arr[high] ?[/quot] 1) полный алгоритм вики можно найти по ссылке https://en.wikipedia.org/wiki/Jump_search там все случаи обрабатываются 2) я привела только часть с прыжками, потому что именно она неправильно реализована в книге 3) по поводу констант, если быть точным, то нужно выполнение условия val = arr[high] ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 15:56 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Ну давайте блин. А то ведь пока первый не начнешь - никто не начинает. Потихоньку. Шаг за шагом. С пониманием контракта. Можно даже сверять с линейным поиском. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:04 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, я говорю конкретно об алгоритмах поиска , а не о всех возможных алгоритмах есть алгоритмы поиска (и их 4), а есть структуры данных, это не одно и тоже не существует метода хэш-поиск, но зато существует структура данных - хэш таблица, которая позволяет быстрый поиск данных по ключу. структуры данных как раз и создаются для того, чтобы получить лучшие результаты, чем позволяют стандартные алгоритмы ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:11 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, с алгоритмом из вики проблем нет, там все норм. проблема с алгоритмом в самом первом посте: там все будет находится правильно, но по скорости выполнения он будет не лучше, чем линейный поиск ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:16 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab mayton, с алгоритмом из вики проблем нет, там все норм. проблема с алгоритмом в самом первом посте: там все будет находится правильно, но по скорости выполнения он будет не лучше, чем линейный поиск А где было обещано что он лучше? Что вообще бывает лучше чем дихотомия на сортированном векторе? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:18 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
exp98, поправка 3) по поводу констант, если быть точным, прыжки должны совершатся до тех пор пока val >= arr[high] ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:22 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton А где было обещано что он лучше? скорость поиска для JumpSearch O(sqrt(n)), это лучше, чем линейный поиск O(n) mayton Что вообще бывает лучше чем дихотомия на сортированном векторе? при условии, что данные распределены равномерно, интерполяционный поиск будет эффективнее, чем двоичный ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:27 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Имя пользователя1 если хэш - некоторое целое число, то это будет индекс массива, где всё хранится, то есть уже никакого поиска не потребуется (хотя, если у некоторых значений совпал хэш, то это будет коллизия и там придется поискать). В этом идея хэш-словаря. да, согласилась ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:30 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Это всё о точном поиске. Существует прикладные задачи на - интервальный поиск, - нечёткий поиск. Но метод Ньютона тоже ищет известное значение в неизвестном месте, но обычно не в дискретных последовательностях, а в континуумах. Ещё веоятностный поиск, как пример точного решения вероятностными методами, поищу ссылку, старая работа, Фрейвальд - фамилия такая. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:30 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab maytonЧто вообще бывает лучше чем дихотомия на сортированном векторе? при условии, что данные распределены равномерно, интерполяционный поиск будет эффективнее, чем двоичныйи при условии, что это данные с ключем сортировки в виде числа. те же строки так не найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:38 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab я говорю конкретно об алгоритмах поиска , а не о всех возможных алгоритмах есть алгоритмы поиска (и их 4), а есть структуры данных, это не одно и тоже Главное выяснено. Тема о том, что алгоритм в книге правильный, но недостаточно быстрый? или не настолько как заявлено автором книги? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:45 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Имя пользователя1, строки можно отсортировать по алфавиту и поставить число в соответствие каждой строке. я думаю, что для любого конечного массива упорядченных данных проблем не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:53 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab строки можно отсортировать по алфавиту и поставить число в соответствие каждой строке. а это уже либо двоичный поиск, либо вычисление хэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 16:59 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
exp98 Просто на той свисте-странице написаны 4 ссылки на эти 4 алгоритма. Ну у этого автора шоры на глазах. Он даже не в курсе, что в псевдоконтинуумах тоже иногда ищут-свищут. Что алгоритмы использовать "детерминированные методы", а могут - вероятностные. напомню, мы говорим, о поиске конкретного элемента в конечномерном массиве так что не наговаривай на автора тут нет ни континума, ни псевдоконтинума. и вероятностных методов тоже. exp98 Тема о том, что алгоритм в книге правильный, но недостаточно быстрый? или не настолько как заявлено автором книги? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 17:00 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Имя пользователя1, для строк интерполяционный поиск в лоб применить нельзя, но можно сделать, что-то типа aaa, aab, aba, abb и я думаю, что на практике нечто подобное и применяется ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 17:14 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab ...проблема с алгоритмом в самом первом посте: там все будет находится правильно, но по скорости выполнения он будет не лучше, чем линейный поиск И одно дело данный топик - никто не сомневался, что в контексте дискретный массив. Другое дело свистепедия. Название статьи с претензией. Сслка из неё на якобы определение "сортированный массив" так и не говорит о том, как он сортирован: asc or desc. Однако код приведён. Ну, свистепедия же. Это к шорам того автора. Я не разбирался, там, кстати, какое из одинаковых найденных ищут? Сылка первого уровня на статью: автор This article incorporates public domain material from the NIST document: Black, Paul E. "jump search". Dictionary of Algorithms and Data Structures. авторIn computer science, a list or sequence is an abstract data type that represents a countable number of ordered values, where the same value may occur more than once. An instance of a list is a computer representation of the mathematical concept of a tuple or finite sequence; the (potentially) infinite analog of a list is a stream.[1]:§3.5 Lists are a basic example of containers, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item. Ссылка 2-го ур. из статьи по "jump search" авторsorted array (data structure) Definition: An array whose items are kept sorted, often so searching is faster. See also binary search, interpolation search, ordered array. авторordered array (data structure) Definition: An array whose items have some order. Usually, it means a sorted array, but may mean not fully ordered, for example, all values less than the median are in the first half. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 17:18 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mini.weblab Имя пользователя1, для строк интерполяционный поиск в лоб применить нельзя, но можно сделать, что-то типа aaa, aab, aba, abb и я думаю, что на практике нечто подобное и применяется Разные языки и системы программирования по разному определяют компаратор или функцию сравнения двух строк. Особенно когда речь идёт о разной длине строк или более чем 2х алфавитах. Яркий пример - лексикографическая сортировка имен файлов и директорий даёт сбой при переходе от десятков к сотням и т.д. А чтобы сравнивать не-лексико-графически а человечески - надо усложнить функцию компаратора. Это бъет по перформансу обычно. И этим никто не хочет заниматься. И это мы еще даже не зашли в такие "области тьмы" как суррогатные пары, нормализация строк по Unicode и прочее. Тоесть сравнить строки без описания смысла компаратора - почти невозможно. И интерполяция - расчет новой точки между двух других для строк также сложен. Например какая строка будет между Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 18:11 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, я не говорила, что интерполяционный поиск будет эффективно работать во всех возможных случаях, тем более, что это неверно даже для целых чисел. я попробую показать возможность конвертации строки в число, и возможность сравнения строки и числа :-) (потому что именно это вызвало сомнения) наиболее интуитивным, будет подход используемый в словарях, и числовая функция строки должна быть большей (или равной) для строк, стоящих позже по алфавиту. Строковая функция: вычисление числового значения строки будет производится по первым 3м буквам, например так ааа = 26 * 26 * 1 + 26 * 1 + 1 baz = 26 * 26 * 2 + 26 * 1 + 26 строка ааа будет иметь тоже числовое значение, что и строка аааа, но аааа будет стоять на более поздней позиции (сортируем по алфавиту) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 20:02 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Возможность сравнения всегда есть. Я говорю о смыслах. Вот фрагмент кода на Java. Реальный рабочий фрагмент. Я гарантирую это. Код: java 1. 2. 3. 4.
Интервал целых чисел от -10 до 21 конвертится в строки и сортируется по правилам строк и распечатывается на консоли. Вот что получается на выходе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Можешь прокомментировать результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 20:40 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
mayton, а почему бы и нет? в данном случае мы наблюдаем последовательное сравнение символов по коду в ascii таблице, как и для обычных строк, только непонятно, какое это имеет отношение к теме... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 21:20 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
Это интуитивно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 21:25 |
|
Jump Search Algorithm: ошибка в псевдокоде
|
|||
---|---|---|---|
#18+
А какой будет рез-т сортировки? Все коды вин-1251. Select ....... From tabl Order by 1 asc; Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 21:26 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339745]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 413ms |
0 / 0 |