ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

27.04.2009, 23:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
rudvil, знаешь.. есть такая замечательная хренька.. массив...
где потомками a[i] являтся a[2*i]-левый и a[2*i+1]-правый (нумерация с 1).. так оно сильно быстрее работает.
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

27.04.2009, 23:45
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Сообщение от desTiny
rudvil, знаешь.. есть такая замечательная хренька.. массив...
где потомками a[i] являтся a[2*i]-левый и a[2*i+1]-правый (нумерация с 1).. так оно сильно быстрее работает.
спс, попробую)
Хотя в глубине души что-то мне подсказывает что это не самый хороший вариант.
|
|
|

27.04.2009, 23:48
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
>>Хотя в глубине души что-то мне подсказывает что это не самый хороший вариант.
Это самый хороший вариант.. поверь)
а если не хочешь верить - сравни время работы такой имплементации и со структурками
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

27.04.2009, 23:57
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме: 3578578
Репутация:
275
|
|
Сообщение от desTiny
rudvil, знаешь.. есть такая замечательная хренька.. массив...
где потомками a[i] являтся a[2*i]-левый и a[2*i+1]-правый (нумерация с 1).. так оно сильно быстрее работает.
А ты знаешь, для чего используются такие структуры данных как список, деревья? Ты будешь каждый раз перевыделять память как только у тебя массив закончится? Не говоря уже о понятности и читабельности кода.
спс, попробую)
Хотя в глубине души что-то мне подсказывает что это не самый хороший вариант.
Попробовать можно только лишь с той целью, чтобы убедиться, что так делать не нужно. При написании интерпретаторов, компиляторов используются такая структура данных как map(хэш-таблица, ассоциативный массив), реализованная в виде бинарного дерева поиска, как правило использующая для балансировки алгоритм красно-черных деревьев. Надеюсь не сильно запутал, но структуры данных нужно знать. Это основа.
|
|
|

28.04.2009, 00:14
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Сообщение от Forcer
А ты знаешь, для чего используются такие структуры данных как список, деревья? Ты будешь каждый раз перевыделять память как только у тебя массив закончится? Не говоря уже о понятности и читабельности кода.
Попробовать можно только лишь с той целью, чтобы убедиться, что так делать не нужно. При написании интерпретаторов, компиляторов используются такая структура данных как map(хэш-таблица, ассоциативный массив), реализованная в виде бинарного дерева поиска, как правило использующая для балансировки алгоритм красно-черных деревьев. Надеюсь не сильно запутал, но структуры данных нужно знать. Это основа.
Нет не запутал)
У меня тоже сомнения возникли насчет массива т.к. я не думаю что тот-же php или python используют массив)))
|
|
|

28.04.2009, 00:52
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме: 298300
Репутация:
128
|
|
Сообщение от desTiny
rudvil, знаешь.. есть такая замечательная хренька.. массив...
где потомками a[i] являтся a[2*i]-левый и a[2*i+1]-правый (нумерация с 1).. так оно сильно быстрее работает.
Нашел, что посоветовать, наверное, ты решил проблему разработчиков за последние лет 30, вот только нихрена не решил, не надо такой ереси советовать.
Попробовать можно только лишь с той целью, чтобы убедиться, что так делать не нужно. При написании интерпретаторов, компиляторов используются такая структура данных как map(хэш-таблица, ассоциативный массив), реализованная в виде бинарного дерева поиска, как правило использующая для балансировки алгоритм красно-черных деревьев. Надеюсь не сильно запутал, но структуры данных нужно знать. Это основа.
Полностью согласен. RB деревья активно используются и не зря, они относительно баллансированы, да и этот вид структуры данных имеет важное свойство - он, сцуко сортированный  Хотя, видя, какие тут советы дают (обычно складывается впечатление, что их дают не программеры, а какие-то трактористы), этот пост мне понравился - все основательно и правильно.
Нет не запутал)
У меня тоже сомнения возникли насчет массива т.к. я не думаю что тот-же php или python используют массив)))
Ты все правильно почувствовал, такие подходы, как совет с массивами - это глупа провокация, сделанная человеком, который, судя по всему не много смыслит в данной предметной области.
|
|
|

28.04.2009, 19:03
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
ну, уважаемые мастера, прошу - посмотрите сколько будет хотя бы СОЗДАВАТЬСЯ, ну например, простейшее дерево отрезков, реализованное с указателями на структурки, и сравните с массивом.
а как я понял, вопрошающий строит дерево для синтаксического анализа и вычисления выражений, а хеш-таблицы, друзья мои, используются для определения ключевых слов языка, и потому к вышеозначенной проблеме не имеют никакого отношения... если уж использовать аналогию с машинами, то я вижу такой диалог:
тс:как поменять колесо? мне кажется надо снять все - чтоб машина была в равновесии, поставить её на кирпичи, потом найти нормальное колесо и потом поставить все обратно
я:нет, возьми запаску, сними одно - не упадёт машина на домкрате - и поставь запаску
вы: нет, не надо так делать, а чтобы поменять масло, надо сделать то-то и то-то, это конечно сложно, но ты должен это знать.
>>Нашел, что посоветовать, наверное, ты решил проблему разработчиков за последние лет 30
вообще-то её уже лет 30 назад решили и активно используют... а изменять размер массива - непонятно, почему сразу не выделить один достаточной длины.
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

28.04.2009, 19:21
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Сообщение от desTiny
а как я понял, вопрошающий строит дерево для синтаксического анализа и вычисления выражений
Абсолютно верно, теперь я в сомнениях... что мне лучше подойдёт.
Видимо нужно спросить у того кто хоть раз серьезно занимался интерпретатором и узнать что будет лучше работать т.к. тут похоже обе стороны правы)
|
|
|

28.04.2009, 19:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
rudvil, я ж предлагаю - посмотри и проверь) работать будут и способ со структурками, и способ с массивом. но способ со структурками а) жрёт больше памяти и б) медленней работает. И в этом нетрудно убедиться - напиши и так и так - всяко на своей шкуре лучше запоминается..
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

28.04.2009, 20:56
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме: 298300
Репутация:
128
|
|
Сообщение от desTiny
ну, уважаемые мастера, прошу - посмотрите сколько будет хотя бы СОЗДАВАТЬСЯ, ну например, простейшее дерево отрезков, реализованное с указателями на структурки, и сравните с массивом.
а как я понял, вопрошающий строит дерево для синтаксического анализа и вычисления выражений, а хеш-таблицы, друзья мои, используются для определения ключевых слов языка, и потому к вышеозначенной проблеме не имеют никакого отношения... если уж использовать аналогию с машинами, то я вижу такой диалог:
тс:как поменять колесо? мне кажется надо снять все - чтоб машина была в равновесии, поставить её на кирпичи, потом найти нормальное колесо и потом поставить все обратно
я:нет, возьми запаску, сними одно - не упадёт машина на домкрате - и поставь запаску
вы: нет, не надо так делать, а чтобы поменять масло, надо сделать то-то и то-то, это конечно сложно, но ты должен это знать.
>>Нашел, что посоветовать, наверное, ты решил проблему разработчиков за последние лет 30
вообще-то её уже лет 30 назад решили и активно используют... а изменять размер массива - непонятно, почему сразу не выделить один достаточной длины.
Вспоминается фраза: "Сержант Петренко дал предупредительный выстрел в воздух и не попал". Достаточная длина - это сколько? Не припоминаете проблему порога 640Кб оперативной памяти в ДОС? А проблему 2000-го года? А самую распространенную ошибку/уязвимость программных продуктов - переполнение буффера?
Не бывает "достаточной" длины массива. Разве что, он будет выделяться динамически, а при переполнении будет делать expand.
Далее, вы так и не сказали, что именно будет хранится в "тройках" массива в вашем чудо-решении. Если это будут просто слова, то приведите, пожалуйста хотя бы следующие алгоритмы, которые обычно предоставляются интерфейсом:
1. Обход дерева
2. Минимальный элемент
3. Максимальный элемент
4. Удаление элемента
Если же это будут структуры, то нападки на нерациональность решения традиционными деревьями - это несколько даже некультурно 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|