Вопросы с тегом «algorithms»

Алгоритм - это последовательность четко определенных шагов, которые определяют абстрактное решение проблемы. Используйте этот тег, если ваша проблема связана с разработкой и анализом алгоритмов.

308
Почему быстрая сортировка лучше, чем другие алгоритмы сортировки на практике?

В стандартном курсе алгоритмов нас учат, что быстрая сортировка в среднем составляет а в худшем случае . В то же время изучаются другие алгоритмы сортировки: в худшем случае (например, mergesort и heapsort ) и даже линейное время в лучшем случае (например, сортировка пузырьков ), но с некоторыми...

159
Есть ли система за магией анализа алгоритма?

Существует множество вопросов о том, как анализировать время выполнения алгоритмов (см., Например, анализ времени выполнения и анализ алгоритма ). Многие из них похожи, например, те, которые запрашивают анализ затрат на вложенные циклы или алгоритмы «разделяй и властвуй», но большинство ответов,...

122
Почему я могу посмотреть на график и сразу же найти ближайшую точку к другой точке, но на программирование у меня уходит O (n) время?

Позвольте мне уточнить: Учитывая диаграмму рассеяния некоторого заданного числа точек n, если я хочу мысленно найти ближайшую точку к любой точке на графике, я могу сразу игнорировать большинство точек на графике, сужая свой выбор до некоторого небольшого, постоянного числа точек поблизости , Тем...

115
Как преобразовать конечные автоматы в регулярные выражения?

Преобразование регулярных выражений в (минимальный) NFA, который принимает тот же язык, легко с помощью стандартных алгоритмов, например , алгоритма Томпсона . Другое направление кажется более утомительным, и иногда получающиеся выражения являются грязными. Какие существуют алгоритмы для...

106
Как обмануть эвристику «попробуй несколько тестов»: алгоритмы, которые кажутся правильными, но на самом деле неверны

Чтобы попытаться проверить, является ли алгоритм для какой-либо проблемы правильным, обычная отправная точка состоит в том, чтобы попытаться запустить алгоритм вручную на нескольких простых тестовых примерах - попробуйте на нескольких примерах проблемных примеров, включая несколько простых «угловых...

100
BIT: Что такое интуиция за бинарным индексированным деревом и как о нем думали?

Бинарное индексированное дерево не имеет или почти не имеет литературы по сравнению с другими структурами данных. Единственное место, где это преподается, это учебник по topcoder . Хотя учебник завершен во всех объяснениях, я не могу понять интуицию за таким деревом? Как это было изобретено? Что...

92
Каковы причины для изучения различных алгоритмов / структур данных, служащих одной и той же цели?

Я задавался вопросом об этом вопросе, так как я был студентом. Это общий вопрос, но я приведу примеры ниже. Я видел много алгоритмов - например, для задач с максимальным потоком я знаю около 3 алгоритмов, которые могут решить эту проблему: Ford-Fulkerson, Edmonds-Karp & Dinic, причем Dinic...

91
Как узнать, какую нотацию анализа сложности времени использовать?

В большинстве вводных классов алгоритмов вводятся нотации, такие как (Big O) и , и студент, как правило, учится использовать одну из них для определения сложности времени.ΘОOOΘΘ\Theta Однако есть и другие обозначения, такие как , и . Существуют ли какие-либо конкретные сценарии, в которых одна...

79
Поиск по графику: сначала ширина, либо глубина

При поиске графиков существует два простых алгоритма: ширина в ширину и глубина вначале (обычно это делается путем добавления всех соседних узлов графа в очередь (ширина в первую очередь) или в стек (глубина в первую очередь)). Есть ли преимущества одного над другим? Те, о которых я мог думать:...

74
Как мы можем предположить, что основные операции над числами занимают постоянное время?

Обычно в алгоритмах мы не заботимся о сравнении, сложении или вычитании чисел - мы предполагаем, что они выполняются за время . Например, мы предполагаем это, когда говорим, что сортировка на основе сравнения - это O ( n log n ) , но когда числа слишком велики, чтобы поместиться в регистры, мы...

68
Какая новинка в MapReduce?

Несколько лет назад MapReduce был провозглашен революцией в распределенном программировании. Также были критики но в целом был восторженный ажиотаж. Он даже запатентован! [1] Название напоминает mapи о reduceфункциональном программировании, но когда я читаю (Википедия) Шаг отображения: главный узел...

62
Есть ли какие-либо проблемы, которые становятся легче, когда они увеличиваются в размерах?

Это может быть нелепым вопросом, но возможно ли иметь проблему, которая на самом деле становится легче по мере увеличения размера входных данных? Я сомневаюсь, что любые практические проблемы такие, но, может быть, мы можем изобрести вырожденную проблему, которая обладает этим свойством. Например,...

62
Алгоритм на месте для перемежения массива

Вам дан массив из 2 н2n2n элементов a1,2, ... ,N, б1, б2, … БNa1,a2,…,an,b1,b2,…bna_1, a_2, \dots, a_n, b_1, b_2, \dots b_n Задача состоит в том, чтобы чередовать массив, используя алгоритм на месте так, чтобы результирующий массив был похож на б1,1, б2,2, … , БN,Nb1,a1,b2,a2,…,bn,anb_1, a_1, b_2,...

60
Алгоритмическая интуиция для логарифмической сложности

Я считаю, что у меня есть разумное представление о сложностях, таких как , Θ ( n ) и Θ ( n 2 )O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) . С точки зрения списка, - это постоянный поиск, поэтому он просто получает заголовок списка. Θ ( n ) - это место, где я прошёл бы весь список,...

60
Разрешен ли ноль в качестве веса ребра в взвешенном графике?

Я пытаюсь написать скрипт, который генерирует случайные графы, и мне нужно знать, может ли ребро в взвешенном графе иметь значение 0. на самом деле имеет смысл, что 0 можно использовать как вес ребра, но я работал с графиками в последние несколько дней, и я никогда не видел пример этого....

55
Что такое самый быстрый алгоритм сортировки для массива целых чисел?

Я сталкивался со многими алгоритмами сортировки во время учебы в старшей школе. Тем не менее, я никогда не знаю, какой самый быстрый (для случайного массива целых чисел). Итак, мои вопросы: Какой самый быстрый в настоящее время известный алгоритм сортировки? Теоретически, возможно, что есть еще...

54
Является ли машина Тьюринга «по определению» самой мощной машиной?

Я согласен, что машина Тьюринга может решать «все возможные математические задачи». Но это потому, что это всего лишь машинное представление алгоритма: сначала сделайте это, затем сделайте это, наконец, выведите это. Я имею в виду все, что разрешимо, может быть представлено алгоритмом (потому что...

52
Что такое хвостовая рекурсия?

Я знаю общую концепцию рекурсии. Я наткнулся на концепцию хвостовой рекурсии при изучении алгоритма быстрой сортировки. В этом видео о алгоритме быстрой сортировки из MIT в 18:30 секунд профессор говорит, что это хвостовой рекурсивный алгоритм. Мне не ясно, что на самом деле означает хвостовая...

50
Почему полиномиальное время называется «эффективным»?

Почему в информатике любая сложность, которая в большинстве случаев является полиномиальной, считается эффективной? Для любого практического применения (a) алгоритмы со сложностью работают намного быстрее, чем алгоритмы, выполняющиеся во времени, скажем, , но первый считается неэффективным, а...