Спасибо, разберусь с Монте-Карло и отпишусь)
Если не сложно, то можно поподробней про Ро? А то чувствую я, что как-то неправильно понимаю его.
1 2012-01-15 13:25:19
Re: Теория чисел. Факторизация. Проверка на простоту (3 ответов, оставленных в Algo)
2 2012-01-14 14:35:51
Тема: Теория чисел. Факторизация. Проверка на простоту (3 ответов, оставленных в Algo)
Я решил немного изучить быстрые алгоритмы факторизации и проверки на простоту. Начнем с проверки на простоту:
В Кормене вычитал про тест Миллера-Рабина, увидел, что реализация довольно простая, написал, даже работает..:) У меня в силу скудных познаний математики возникли вопросы, на которые не Кормен, ни гугл ответов (понятных для меня) не дали. Отличие теста Миллера-Рабина от простой проверки малой теоремы Ферма заключается в том, что по ходу возведения в степень мы ещё и проверяем некий нетривиальны корень из 1. Собственно вопрос: что такое этот корень из 1 и как он влияет на алгоритм, простоту числа и т.д?
С факторизацией дела немного хуже обстоят. В том же Кормене прочитал про метод Полларда, который ро. Мало того, что метод для меня совсем не очевиден, так ещё работает он достаточно сомнительно. В моем алгоритме я сначала проверял число на простоту, потом проверял все простые числа меньшие чем 10^7, которые в самом начале решетом нашел, а потом, зная, что N=pq, писал Полларда-ро. Реализация из Кормена и та, котору я списал с е-макса, на злостных тестах вроде (2^31-1)*(10^9+7) не работает. Гуглил другие методы, из всех понятным мне кажется лишь метод Ферма, который, кстати, прилично работает, но на вышеупомянутых тестах и он валится. Метод Лемана в реализации простой, но там мне кажется огромная константа в силу постоянных вычислений корней разных степеней+переполнение на тестах где N^4/3>2^63-1, то есть работает где-то для N<=10^13 степени, что как-бы не серьезно. Хотя я могу ошибаться, ибо опираюсь лишь на статью из Википедии.
Знаю, есть ещё куча разных методов, вроде р+1, р-1 и так далее, но они тёмные какие-то для меня.
Какими методами пользуетесь вы, в чём их суть? Если не сложно, то объясните в двух словах детали реализации и почему они правильные? Возможно я просто плохо понимаю тот же Полларда-ро, а на самом деле он хорошо работает, но моя кривая реализация подвела.
Заранее спасибо!
3 2011-11-27 21:26:56
Re: Количество достижимых вершин в DAG (5 ответов, оставленных в Problems)
Ладно, всем спасибо, сам уже понял решение за NM/32. А быстрее решений не существует?
4 2011-11-25 15:32:36
Re: Количество достижимых вершин в DAG (5 ответов, оставленных в Problems)
Такое подходит. Можно поподробней?
5 2011-11-24 21:35:47
Re: Количество достижимых вершин в DAG (5 ответов, оставленных в Problems)
Хмм... А зачем, если можно уже дфсом за N^2? Я сейчас не говорю о полном графе, так как при больших N входные данные слишком уж большие.
6 2011-11-24 20:18:57
Тема: Количество достижимых вершин в DAG (5 ответов, оставленных в Problems)
Собственно, есть DAG, нужно для каждой вершины узнать сколько вершин достижимо из неё. Нужно самое быстрое решение. Слышал, можно как-то сделать за (N^2)/32, но слабо представляю как.
7 2011-11-19 20:36:58
Тема: COCI 2011/2012 Contest #2 (1 ответов, оставленных в Problems)
Хотелось бы узнать решения последних двух задач. Пятая - вроде бы, боян, но ни разу не решал нормально такую. Шестую довольно простенько сделал за О(maxT) на запрос, но этого, конечно же, мало, точнее сказать - много:)
9 2011-08-10 11:50:20
Тема: Алгоритм Карацубы (2 ответов, оставленных в Algo)
Я реализовал алгоритм Карацубы и хотел сдать задачу, где нужно просто умножать большие числа:
http://www.spoj.pl/problems/MUL/cstart=10
Но неожиданно для себя получил ТЛЕ. Сделал оптимизацию для обычного умножения, чтобы не брать каждый раз остаток, а в конце один раз пересчитывать и переносить по разрядам. Это увеличило скорость где-то в 2 раза, но этого всё ещё не достаточно. Обычное умножение делаю, если длина числа меньше 70, я уже много перепробовал, это приблизительно самая оптимальная константа для этих ограничений. Числа, конечно же, храню по основанию 10^9. Лично я думаю, что я либо сильно накосячил где-то(не знаю где), либо много времени тратится на выделение памяти при рекурсивных вызовах, так как там передаётся 2 массива по 3000 инт64 и ещё 7 массивов локальных.
У кого-то были такие проблемы с этим алгоритмом?Если да, то посоветуйте, пожалуйста, как его оптимизировать. И вообще эффективен ли он на практике?
10 2011-04-25 20:36:37
Re: Графы с двумя параметрами ребер (1 ответов, оставленных в Algo)
Чтобы сумма была минимальна, нужно сложить все параметры и работать с ними
12 2011-04-25 14:42:24
Тема: LCA online (2 ответов, оставленных в Algo)
Как решать эту задачу двоичным подъёмом в режиме онлайн? Нам ведь нужно определять является ли одна вершина предком другой. Я знаю, что если выполнить все запросы добавления, а потом найти все LCA, то тоже будет правильно, но мне интересно как решать эту проблему "влоб".
13 2011-04-21 17:54:57
Re: Максимальное бинарное дерево (8 ответов, оставленных в Problems)
Ну так выбирать стоит не по размеру поддерева, очевидно, что это не верно, а рекурсивно.
14 2011-04-20 21:43:40
Re: Максимальное бинарное дерево (8 ответов, оставленных в Problems)
Если я не ошибаюсь, то можно перебирать корни, а потом жадным обходом строить дерево, а именно: на каждом шаге выбирать такие две вершины, что количество ещё не выбранных, достижимых из двух сыновей этих вершин максимально. Наверное, прийдётся делать рекурсивно, но сложность должна будет быть адекватной.
15 2011-04-17 12:52:05
Re: Подборка по геометрическим алгоритмам (8 ответов, оставленных в Algo)
На каждую из задач, которые тебя интересуют, довольно легко написать решение за Н*Н, генератор, тестилку. Так что ты можешь их тестировать самостоятельно, при этом, получая тесты, на которых твои решения валяться.
16 2011-04-14 23:11:20
Re: Подборка по геометрическим алгоритмам (8 ответов, оставленных в Algo)
ааааа, так тебе алгоритмы нужны?:)
Ближайшая пара точек хорошо описана на этом же сайте, даже я её здесь понял.
Пересечение двух отрезков делается сканлайном, не очень сложно, советую почитать в Кормене.
Идея такая же, как и с отрезками.
Каких-то быстрых алгоритмов для нахождения расстояния я не встречал, но наверное, они существуют. А вообще можно за Н*М делать: просто искать расстояние от каждого отрезка первого полигона до каждой точки второго.
Принадлежность точки многоугольнику тоже умею только за Н делать, но оно даже за Н не часто надо
17 2011-04-14 20:22:36
Re: Подборка по геометрическим алгоритмам (8 ответов, оставленных в Algo)
http://informatics.mccme.ru/moodle/
тут есть немного задач на геометрию.На задачи на пересечение отрезков, кругов, поиск ближайших(дальнейших) точек можно самому написать тривиальный перебор, генератор, тестилку чтобы самому протестить.
18 2011-04-13 17:08:33
Re: Подборка по геометрическим алгоритмам (8 ответов, оставленных в Algo)
На информатикс.
19 2011-04-11 23:23:42
Re: Timus 1590 hash (32 ответов, оставленных в Problems)
У меня, например, хеши ТЛяться:) Возможно они кривые, но всё же... Разве тебе не интересны ещё способы решить такую тривиальную задачу?
20 2011-04-11 23:02:59
Re: Timus 1590 hash (32 ответов, оставленных в Problems)
Спасибо!
Касательно суффиксного дерва, насколько я знаю, там не далеко уже и до дерева Укконена.
21 2011-04-11 22:50:14
Re: Timus 1590 hash (32 ответов, оставленных в Problems)
Да в память не влезет 100%, но идея изящнее хешей
А можно поподробнее с п-функцией идею рассказать?
22 2011-04-11 22:10:12
Re: Timus 1590 hash (32 ответов, оставленных в Problems)
Кстати, есть ещё такое интересное решение:
Строим бор по суффиксам исходной строки. Теперь что представляет из себя вершина бора? - префикс одного из суффиксов. Все префиксы всех суффиксов - все подстроки. Очевидно, что одинаковых префиксов в боре не будет. Теперь мы доказали, что количество вершин в таком боре - количество разных подстрок.
24 2011-04-10 21:53:24
Re: Хранение графа. (9 ответов, оставленных в Problems)
А что здесь особенного?Насколько я понял, это стандартный связный список. Сразу начал читать описание - так и подумал, потом увидел комменты о том, что вычитал где-то у АCRush'a, перечитал описание, вроде бы ничего необычного не заметил. Мб для сишников это не проблема, но мне на паскале без связного списка на графы разве что Флойда писать можно:)
25 2011-04-08 23:36:01
Re: Timus 1590 hash (32 ответов, оставленных в Problems)
Добавление у меня такое же, но я кажется понял в чём ошибка у меня: ты наверное перебираешь все подстроки по длине сначала, а потом очищаешь список. Я же всё кидал в один список...:/
Большое спасибо за помощь!