Вопросы с тегами [algorithm]

1

голосов
2

ответ
71

Просмотры

Best practice: how to pass many many arguments to a function?

Я бегу некоторые численные эксперименты, в которых моя главная функция должна получать много и много аргументов - я говорю от 10 до 30 аргументов в зависимости от моделирования для запуска. Каковы лучшие практики для обработки случаев, как это? Разделив код в, скажем, 10 функций, с 3-мя аргументами каждый не звучит очень возможно в моем случае. Если это не лучший форум для этого типа вопросов, вы можете порекомендовать где спросить? Что я могу сделать, это создать экземпляр класса (без методов), хранить входные данные в качестве атрибутов этого экземпляра, а затем передать экземпляр - так что функция принимает только один вход. Мне это нравится, потому что код выглядит чистым, легко читать, и потому что я считаю, что легко определить и запустить альтернативные сценарии. Мне не нравится, потому что доступ к классу атрибутов в функции происходит медленнее, чем доступ к локальной переменной (см: Как / почему для оптимизации кода путем копирования атрибутов класса для локальных переменных), а потому, что это не эффективное использование памяти - слишком много данных, хранящихся несколько раз без необходимости. Любые мысли / предложения / рекомендации? Большое спасибо! myinput = MyInput () myinput.input_sql_table = that_sql_table myinput.input_file = that_input_file myinput.param1 = param1 myinput.param2 = param2 myoutput = известково (myinput) Альтернативные сценарии: входы = collections.OrderedDict () сценариев = collections.OrderedDict () входы [ 'Базовый сценарий'] = copy.deepcopy (myinput) входы [ 'param2 = 100'] = copy.deepcopy (myinput) входы [ 'param2 = 100']. param2 = 100 # цикл через все входы и выходы магазинах в упорядоченный словарь сценарии
1

голосов
1

ответ
50

Просмотры

Получить все возможные комбинации строки генерируются из символов ASCII между двумя числами

Мне нужна простой яваскрипт функция, которая принимает 3 вход 1- начального значения ASCII-2- конечного значения ASCII, длина 3- Строки Функции будет цикл от начального значения, чтобы конечное значения до тех пор, пока длина была сделана. Так, например, начало - 65 - конец 67 длина- 2 Хочу все комбинации (длина 2) ASCII из [65, 66, 67], что [ «А», «В», «С»] Я хотел бы, выход как AA AB AC BB BA BC CA CB CC
murtuza hussain
0

голосов
0

ответ
12

Просмотры

Кто-нибудь знает название этого алгоритма или иметь лучшее представление в время тенденции

Я нашел этот алгоритм времени тренда Calculate, если тренд вверх, вниз или стабильной Но я не могу понять, что это и зачем это делать. Или есть какие-либо предложения или существующая модель для соответствующей задачи?
Lun Tsai
1

голосов
2

ответ
1.4k

Просмотры

Исходный алгоритм ([источник, целевой, вес, G)] функции NetworkX shortest_path

Я делаю некоторую работу с NetworkX и использовал два кратчайших путь алгоритмы, а именно: shortest_path (G [, источник, цель, вес]) dijkstra_path (G, источник, цель [, вес]) Я понимаю, что dijkstra_path (G, источник, цель [, вес] функция) основана на алгоритме кратчайшего пути Дейкстров. Я хотел бы знать алгоритм источника, на котором ([,, источник, целевой вес] G) базируется shortest_path функции. Мне это нужно, потому что я должен сообщить об алгоритмах, которые я использовал. Я искал некоторые StackOverflow страницы, как NetworkX - Кратчайшую длину пути и все кратчайшие пути для взвешенных графов с NetworkX? но они не совсем ответ на мой вопрос, я также внимательно посмотреть на NetworkX документации и других статей на Google и не получили нашел ответ. Может кто-то пожалуйста, помогите мне с этой информацией. Спасибо
Nobi
4

голосов
3

ответ
188

Просмотры

как найти медиану вектора, если метод Const?

Я создал метод, называемый Collect, который добавляет кучу значений вектора (как показано ниже) аннулируется Median :: Collect (двойной ИГД) {myVector.push_back (геодезический); } Мне нужно создать метод, который вычисляет медиану всех значений I, собранных в векторе в указанном выше способе. Определение функции написано ниже / * Вычисляет медиану данных (нулевые точки) из метода Collect. * / Двойной Медиана :: Вычислить () сопзЬ {} Так что я знаю, что я в первую очередь необходимо отсортировать вектор для того, чтобы найти медиану. Ниже моя попытка: двойная Медиана :: Вычислить () сопзЬ {станд :: сортировки (myVector.begin (), myVector.end ()); двойная медиана; если (myVector.size ()% 2 == 0) {// даже средний = (myVector [myVector.size () / 2 - 1] + myVector [myVector.size () / 2]) / 2; } Еще {// нечетное средний = myVector [myVector.size () / 2]; } Вернуть медиану; } Но я понял, что это не компиляции, так как метод сопзИте, поэтому сортировку значений вектора изменит вектор, который не допускается в константной функции. Так что я должен делать для этого метода?
Sarah
6

голосов
0

ответ
104

Просмотры

Как оптимизировать параллельную сортировку улучшить временную работу?

У меня есть алгоритм параллельной сортировки списка заданной длины: импорт Control.Parallel (пар, pseq) импорт Data.Time.Clock (diffUTCTime, GetCurrentTime) импорт System.Environment (getArgs) импорт System.Random (StdGen, getStdGen, Randoms) parSort :: (Ord а) => [а] -> [а] parSort (х: хз) = сила больше `par` (заставить меньшую` pseq` (менее ++ х: больше)), где меньшие = parSort [у | у [а] -> [а] сортировки (х: хз) = меньшее ++ х: больше, где меньше, = рода [у | у (сила) хз = хз идут `pseq` (), где идут (_: хз) = идти хз идти [] = 1 randomInts :: Int -> StdGen -> [Int] randomInts кг = позволяют Result = принять к (Randoms г) в результате силы `seq` результат функции теста = parSort основных = делать арг
Vasiliy
1

голосов
2

ответ
200

Просмотры

Как узнать все недостающее временной интервал (ы) на один день

Есть ли какие-либо алгоритмы, чтобы найти все недостающие временные интервалы на день. Учитывая, что существует четыре временных интервала, которые выбраны. например Ожидаемый ввод: 08: 00-1259, 13: 45-17: 15, 14: 15-19: 00, 20: 00-23: 33 Я хотел бы узнать, все не хватает временных интервалов на основе четырех временных интервалов является выбирается ниже критериев. Выбранные временные интервалы могут перекрываться (например, 13: 45-17: 15, 14: 15-19: 59) Игнорирует пропущенные временной интервал, который позднее время окончания последнего временного интервала (например, не показывают все недостающие время слот после 23:33) Ожидаемый выход: 13: 00-13: 44, 19: 01-19: 59 Вы можете попробовать, даже если есть некоторые алгоритмы, которые похож не соответствуют указанным выше критериям. Обновление: Я думаю, что это не достаточно эффективным для моего суда. Я стараюсь опустить все «:» и перебираем от 0 до 2359 и проверить, если каждую минуту находится в диапазоне четырех выбранных временных интервалов, или нет. После того, как я узнал минуту, которая из любых выбранных временных интервалов. Эта минута будет записана как время начала недостающего временного интервала. Затем, когда в следующей минуте, которая находится в пределах этих четырех временных интервалов найдена. Я буду минус в ту же минуту с 1 и записать его в качестве конечного времени отсутствующего временного интервала. например, когда счетчик на 1300, 1300, будет рассматриваться как время начала недостающего временного интервала, и когда счетчик находит в 1345 я буду минус одна минута и отметить время окончания как 1344.
Danny Pang V
1

голосов
1

ответ
1.4k

Просмотры

Java Calculate Max Steps of Stairs and skip stair

Недавно я получил интервью для стажера позиции и один из вопросов был похож на этот: Входной сигнал: п для ряда мероприятий, к для лестницы, что вы не могли бы наступить на вопрос: Джек н количество действий, где он хочет достичь максимальное количество шагов, но не может наступить на к-й ступеньке. Для каждого действия, Джек может либо остаться на своем текущем шаге или прыгать я шаги, если он находится на го действия, и это продолжает идти, пока он не закончил свою п-ю акцию. Выход: Максимальная лестничный он может достичь в п действий Это было проверено с помощью Hackerrank (с интервьюером там), и я прошел только 3 из 8 тестов с временем отдыха вне Это было мое решение, которое было закодировано на лета, и я мог не оптимизировать его и было интересно, если бы был гораздо более оптимальное решение: статические INT maxStep (Int N, Int к) {INT результат = 0; если (п == 0) {возвращение результата; } Вернуть maxStepHelper (п, 0, к, результат); } Статические INT maxStepHelper (Int N, Int я, Int к, INT результат) {// При п + 1 шагов, результаты предыдущих шагов записываются и это в основном используется для остановки и показать предыдущие результаты, если (я == п + 1) {Возвращаемый результат; } INT NeXTSTEP = я + результат; если (NeXTSTEP == к) {вернуть maxStepHelper (п, + 1, к, результат); } Вернуть Math.max (maxStepHelper (п, + 1, к, результат), maxStepHelper (п, + 1, к, результат + I)); } Обратите внимание, что я использовал рекурсивный подход, который не мог бы помочь Результаты записываются и это в основном используется для остановки и показать предыдущие результаты, если (я == п + 1) {возвращение результата; } INT NeXTSTEP = я + результат; если (NeXTSTEP == к) {вернуть maxStepHelper (п, + 1, к, результат); } Вернуть Math.max (maxStepHelper (п, + 1, к, результат), maxStepHelper (п, + 1, к, результат + I)); } Обратите внимание, что я использовал рекурсивный подход, который не мог бы помочь Результаты записываются и это в основном используется для остановки и показать предыдущие результаты, если (я == п + 1) {возвращение результата; } INT NeXTSTEP = я + результат; если (NeXTSTEP == к) {вернуть maxStepHelper (п, + 1, к, результат); } Вернуть Math.max (maxStepHelper (п, + 1, к, результат), maxStepHelper (п, + 1, к, результат + I)); } Обратите внимание, что я использовал рекурсивный подход, который не мог бы помочь
mding5692
1

голосов
2

ответ
49

Просмотры

Сложность алгоритма Дейкстры для кучного реализации

В книге CRLS», анализ алгоритма Дейкстры выглядит следующим образом: Сколько раз вам нужно использовать кучу? Один раза для стаскивать каждый узел из кучи (т.е. Extract-Min в книге CRLS в) --- O (N); а также каждый раз, когда смотрит на край ---- O (E), вам, возможно, придется изменить расстояние (т.е. Уменьшить-Key в книге CRLS»), а это значит, исправить порядок кучи. И каждая операция кучи нуждается в O (LogN) работе. Таким образом, общее время сложность: O ((N + E) LogN), который представляет собой О (ElogN), если все вершины достижимы из источника. Мой вопрос: почему сложность становится O (ElogN), если все вершины достижимы из источника? Почему мы можем игнорировать O (NlogN) часть из O ((N + E) LogN)?
coder
1

голосов
3

ответ
57

Просмотры

Having issues which Mergesort's compare and ordering part (c++)

I have read and understood how Mergesort works (as a text) and now I'm trying to code it. I have finished the part where you divide the data (I use vectors) until it has each size of 1. Now I have written code for another required part in Mergesort, I don't know how to call it but I just call it "compare and ordering part". You have 2 vectors and this part is supposed to compare the very first elements, take the smaller element, then remove the chosen element and put it inside a new vector. Doing that untill both vectors have size 0. I'm sorry for the long code but I really don't see why the very last element is ignored by the code? : / I have added some comments so maybe it is easier to follow what I tried to do. I tried as input: vector v1 = {1,4,5,9}; vector v2 = {2,3,6,7,8}; Output: 1 2 3 4 5 6 7 8 0 vector sortit(vector &left, vector &right) { vector sorted(left.size() + right.size()); int i = 0; while (left.size() > 0 && right.size() > 0) { if (left.at(0) 0) { sorted.at(i) = left.at(0); left.erase(left.begin()); } } i++; } return sorted; }
joasdf
1

голосов
1

ответ
241

Просмотры

Алгоритмы сочинять музыку [закрыт]

Предположим, я хочу написать заявление, чтобы сочинять музыку. Я хотел бы, чтобы накормить множество музыкальных партитур композитора - Ну, например, Баха темперированного клавира»- и программа должна подготовить новые результаты в подобном стиле. Существуют алгоритмы или даже библиотеки, известные для этой задачи? WikiPedia предоставляет эту страницу об алгоритмической музыкальной композиции.
SteAp
-3

голосов
1

ответ
21

Просмотры

Как преобразовать необработанное десятичное число значений RGBA?

Этот ответ объясняет, как номера 4280362283 являются сырыми цветовыми кодами десятичными. Библиотека Я использую передает их. Что алгоритм для преобразования их? Ive бросить некоторые попытки, как это на стену, но ничего не застряло до сих пор: console.log ( "декабрь:", arr1 [0]) пусть num1 = ParseInt (arr1 [0], 16); console.log ( "Hex:", num1); пусть г = ParseInt (. num1.toString () срез (0, 3), 16); Пусть G = ParseInt (. num1.toString () срез (3, 6), 16); пусть Ь = ParseInt (. num1.toString () срез (6, 9), 16); console.log ( "R, G, B:", г, г, б);
Viziionary
-2

голосов
0

ответ
25

Просмотры

Расчет расстояния редактирования между двумя строками в Python

Я хочу, чтобы вычислить матрицу редактировать расстояние между двумя строками на уровне символов. Вот моя функция: Защита editDistance (г, з): «»»Эта функция для вычисления расстояния редактирования ссылочного предложения и гипотезы предложения. Основной алгоритм используется динамическое программирование. Атрибуты: г -> список слов, полученных эталонным расщепление предложения. ч -> список слов, полученных путем расщепления гипотезы предложения. ''»D = numpy.zeros ((Len (г) + 1) * (LEN (ч) +1), DTYPE = numpy.uint8) .reshape ((Len (г) + 1, Len (ч) +1 )) для г в диапазоне (LEN (г) + 1): для J в диапазоне (LEN (ч) + 1): если I == 0: d [0] [J] = J Элиф J == 0: d [I] [0] = я для г в диапазоне (1, длина (г) + 1): для J в диапазоне (1, Len (ч) + 1): если г [I-1] == ч [Дж -1]: большинство музыкальных инструментов магазины будут нести массив элементов поддержки для гитары и других инструментов, таких как элементы управления и элементы ручки для блокировки ремень на гитаре широкий массив строк в любом из нейлона стали бронзы для электрических и акустических и классических гитар Колки если что-то идет не так с настройкой механизма шага труб вешалок, чтобы повесить гитару на стене, чтобы она с не легко опрокинуть и повреждение соединения и монтаж вещи для монтажа строк и про ПРС \ п»функция ничего для этих входов т.е. не возвращает застревает бесконечно. Как решить проблему?
tstseby
1

голосов
0

ответ
314

Просмотры

Как моделировать алгоритм применения скидок к ценам?

Меня попросили разработал решение легко применить применение скидки на продукцию в магазине электронной коммерции, и я попытался сделать это в наиболее общем виде. Допустим, мы имеем следующие продукты: Продукт A: $ 5 Продукт B: $ 20 Продукт C: $ 7,50 И мы имеем следующие скидки: 2-в-1 для продукта А если вы покупаете 3 или больше деталей о продукте B, цена за единицу должна быть 19.00 €. Чтобы сделать это, я смоделировал класс под названием правил ценообразования, которая содержит следующие данные: min_items: Минимальное количество приобретенных товаров, необходимых для применения скидки. discounted_items_rate: доля продуктов, пострадавших от дисконта. price_reduction: процент снижения цен применяются к элементам со скидкой. Используя этот класс, скидка 2-в-1 будет min_items: 2. По крайней мере, должно быть 2 товаров в корзине. discounted_items_rate: 0,5. Половина пунктов будет получить скидку price_reduction: 1. Это означает, снижение цен будет 100%. И таким же образом, 3 или более элементов из продукта В за $ 19 будет: min_items: 3 discounted_items_rate: 1 (все из них) price_reduction: 0,05 ($ 19 вместо 20 $ будет снижение цены на 5%). Я смоделировал формулу для определения общей стоимости, формула будет выглядеть так:. (Забудьте о правильности коды, представьте, что мы итерацию правильно над CART и мы выбираем соответствующий PRICING_RULE Представьте тележку как CART = {productA: 10 пунктов, productB: 6 шт, ....}), если (CART.PRODUCT.ITEMS> PRICING_RULE.min_items) [Он имеет дисконтную] уаг items_with_discount = пол (CART.PRODUCT.ITEMS * PRICING_RULE.discounted_items_rate) вар with_discount = items_with_discount * цена * (1 -PRICING_RULE. price_reduction) вар without_discount = (CART.PRODUCT.ITEMS - items_with_discount) * цена общая + = (with_discount + without_discount) еще [Это не скидка] общая + = CART.PRODUCT.ITEMS * цена Например, если я покупаю 5 пунктов из продукта а, общая цена будет 5 * 5 = $ 25, но у меня есть 2-в-1 скидка, так что цена будет $ 15. Следуя алгоритму: items_with_discount = пол (5 * 0,5) = пол (2.5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 всего + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидки). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? ПОЗИЦИИ - items_with_discount) * общая цена + = (with_discount + without_discount) еще [Это не скидка] общий + = CART.PRODUCT.ITEMS * цена Например, если я покупаю 5 наименований продукта А, общая цена будет 5 * 5 = $ 25, но у меня есть 2-в-1 скидка, так что цена будет $ 15. Следуя алгоритму: items_with_discount = пол (5 * 0,5) = пол (2.5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 всего + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидки). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? ПОЗИЦИИ - items_with_discount) * общая цена + = (with_discount + without_discount) еще [Это не скидка] общий + = CART.PRODUCT.ITEMS * цена Например, если я покупаю 5 наименований продукта А, общая цена будет 5 * 5 = $ 25, но у меня есть 2-в-1 скидка, так что цена будет $ 15. Следуя алгоритму: items_with_discount = пол (5 * 0,5) = пол (2.5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 всего + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидки). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? ПРЕДМЕТЫ * цена Например, если я покупаю 5 наименований продукта А, общая цена будет 5 * 5 = $ 25, но у меня есть 2-в-1 скидка, так что цена будет $ 15. Следуя алгоритму: items_with_discount = пол (5 * 0,5) = пол (2.5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 всего + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидки). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? ПРЕДМЕТЫ * цена Например, если я покупаю 5 наименований продукта А, общая цена будет 5 * 5 = $ 25, но у меня есть 2-в-1 скидка, так что цена будет $ 15. Следуя алгоритму: items_with_discount = пол (5 * 0,5) = пол (2.5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 всего + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидки). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? 5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 общая + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидка). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде? 5) = 2 with_discount = 2 * 5 * (1 - 1) = 0 without_discount = (5 - 2) * 5 = 15 общая + = 0 + 15 = $ 15 Это работает для многих популярных скидок (5-на-3, 3-в-1, 8% скидка на все продукты, 3 или больше для X-цена, .... любая типичная скидка). Я получил обратную связь, что кажется сложным, но на самом деле я нахожу это очень просто. Что является лучшим способом для моделирования алгоритма для применения скидки в общем виде?
jmjimenezt
1

голосов
2

ответ
69

Просмотры

Эксперимент с алгоритмом находки с помощью дозорных

Я экспериментировал с некоторым известным алгоритмом, который стремится уменьшить количество сравнений в операции поиска элемента в массиве несортированного. Алгоритм использует часовой, который добавляется к задней части массива, что позволяет написать цикл, где мы используем только одно сравнение, вместо двух. Важно отметить, что в целом Big O вычислительная сложность не изменяется, она по-прежнему O (п). Тем не менее, если смотреть на количество сравнений, стандартный алгоритм вывод, так сказать, O (2n), а алгоритм сторожевого представляет собой О (п). Стандартный алгоритм находки из C ++ библиотеки работает как это: (!; Первый = последним; ++ первый) шаблон InputIt найти (InputIt первого, InputIt последних, сопзИте T & значение) {для {если (* первый == значение) {вернуться первым ; }} Вернуться в последний раз; } Мы можем видеть два сравнения там и один шаг. В алгоритме с дозорным цикл выглядит следующим образом: в то время как (ключ [я]! =) ++ я; Существует только одно сравнение и один инкремент. Я сделал некоторые эксперименты и измерял время, но на каждом компьютере, результаты были разными. К сожалению, я не имел доступа к какой-либо серьезной машине, у меня был только мой ноутбук с VirtualBox там с Ubuntu, под которым я компиляции и запуска кода. У меня была проблема с количеством памяти. Я попытался с помощью онлайн-компиляторы, как Wandbox и Ideone, но сроки и ограничения памяти не позволяют мне делать надежные эксперименты. Но каждый раз, когда я запускаю свой код, изменяя число элементов в моем векторе или изменение числа исполнения моего теста, я видел разные результаты. Иногда времена были сопоставимы, а иногда STD :: находка была значительно быстрее, иногда значительно быстрее, был алгоритм дозорного. Я был удивлен, потому что логика говорит о том, что версия сторожевой действительно должна работать быстрее, и каждый раз. Есть ли у вас какие-либо объяснения для этого? Есть ли у вас опыт работы с такого рода алгоритма? Это worht усилия, чтобы даже попытаться использовать его в производстве код, когда производительность имеет решающее значение, и когда массив не может быть отсортирован (и любой другой механизм, чтобы решить эту проблему, как HashMap, индексирование и т.д., не может быть использована)? Вот мой код проверки этого. Это не красиво, на самом деле это некрасиво, но красота была не моя цель здесь. Может быть, что-то случилось с моим кодом? #include #include #include #include с помощью патезрасе :: хронографа; используя патезрас; Const без знака длиной длиной N = 300000000U; статической силы find_with_sentinel () {вектор а (N); символ ключа = 1; а [N - 2] = ключ; // убедитесь, что искомый элемент находится в массиве на последнем, но один индекс неподписанные долго длинный высокий = N - 1; авто TMP = а [высокие]; // поместить дозорных в конце массива а [высокий] = ключ; без знака долго долго я = 0; в то время как (а [я] = ключ!) ++ я; // восстановить первоначальное значение а [высокие] = TMP; если (я == высокий && ключ! = TMP) соиЬ
YotKay
1

голосов
0

ответ
121

Просмотры

Counting unique records in HIVE/SQL with many-to-many mapping based on a uniqueness criteria

Описание проблемы задается следующим образом: пользователь может иметь несколько учетных записей и несколько телефонных номеров, связанных с этой учетной записи. Один аккаунт может быть связан с одним или несколькими телефонными номерами. Единый номер телефона может быть связан с одним или несколькими счетами. Никакие два пользователи не будут иметь один и тот же счет. Никакие два пользователи не будут иметь один и тот же номер мобильного телефона. Мы должны найти количество уникальных пользователей из этой информации. Образец набора данных может быть дано следующим образом: | mob_num | acc_num | + --------- + --------- + | mob01 | acc02 | | mob01 | acc01 | | mob02 | acc02 | | mob03 | acc01 | | mob11 | acc11 | | mob12 | acc11 | | mob13 | acc11 | | mob21 | acc21 | | mob21 | acc22 | | mob21 | acc23 | Пример вывода для этого набора данных: 3 В этом случае, у нас есть 3 уникальных пользователей. Например, один уникальный пользователь можно вычислить следующим образом: 1) mob01 связана с acc01, acc02 2) mob02 связана с acc02 3) mob03 связана с acc01 пользователь может иметь несколько acocunts и мобильные номера. Если mob01 связан с acc01 и acc02. Можно смело предположить, что данный пользователь имеет номер мобильного mob01 и счета acc01 и acc02. Тем не менее, acc02 связан с mob02, а также. Таким образом, мы можем заключить, что mob02 принадлежит к одному пользователю. То же самое с mob03. Поэтому, несмотря на то, есть много-ко-многим картирования мы уверены, что mob01, mob02, mob03 и acc01, acco2 принадлежат одному пользователю. Используя подобную логику, mob11, mob12 и mob13 связаны с acc11. Этот конкретный пользователь имеет три номера мобильных телефонов, связанные с одной учетной записью. Кроме того, mob21 связан с acc21, acc22, acc23. Пользователь имеет один мобильный номер, связанный с тремя счетами. Нет два пользователя не может иметь тот же номер счета или номер мобильного телефона. Таким образом, мы можем установить критерии уникальности для пользователя. Теперь с учетом данных представляет собой таблицу, в Улей / РСУБД, как мы можем вычислить число уникальных пользователей? (Если можно решить это с помощью запросов SQL)
1

голосов
0

ответ
81

Просмотры

вычисления времени сложность сложных функций

Я учусь, как найти временную сложность алгоритма. Я не могу выяснить, временную сложность (в плане большого O) в следующей функции: 6n ^ 3 / (LogN +1) Есть ли простой способ вычислить его?
user9191594
1

голосов
1

ответ
72

Просмотры

Время Сложность Поиск Все возможные суммы

Вот решение для алгоритма, который хочет меня, чтобы найти все возможные суммы приведены массив монет и их соответствующих величин. Я с трудом производных временной сложностью этого алгоритма. Любая помощь будет высоко ценится, спасибо !! константные монеты = [1, 2, 3]; Const количество = [1, 2, 2]; Const possibleSums = (монеты, количество) => {Const uniqueSums = новый набор ([0]); для (пусть I = 0; я <coins.length; я ++) {константный currentSums = новый Set (); для (пусть J = 1; J
starlight934
1

голосов
1

ответ
77

Просмотры

leetcode подмножество Javascript код возвращает пустой массив

Я новичок в алгоритмах и есть глупый вопрос о проблеме leetcode. Проблема просит все подмножества для данного массива, который содержит только отдельные целые числа. В моем коде, console.log массива списка дает мне то, что я хочу, что группа подмножеств входных данных. Но это не проходит вниз в результате. В результате возвращается что-то вроде этого: [[], [], [], [], [], [], [], []] Ниже мой код: константные подмножеств = (НУМС) => {пусть результат = [ ]; пусть список = []; Const хелпер = (результат, список, НУМС, положение) => {для (пусть я = положение; г <nums.length; я ++) {list.push (НУМС [I]); помощник (результат, список, НУМС, я + 1); list.pop (); } Console.log (список) // это то, что я хочу. но он не проходит вниз результат !!! result.push (список); } Помощник (результат, список, НУМС, 0) Возвращаемый результат; } Любые мысли было бы удивительным! Спасибо!
Sisi Qin
1

голосов
0

ответ
61

Просмотры

Как построить алгоритмы для оптимизации высоких результатов в игре

Мое любимое приложение, которое я когда-либо играл в drop7, игра-головоломка. Я связала страницу википедии, если вы не знакомы с этим https://en.m.wikipedia.org/wiki/Drop7 Так как я начал играть в эту игру, Ive только что пытался получить высокие баллы в их молниеносной раунде, потому что это быстрая игра. Я хочу, чтобы написать сценарий, предпочтительно в Python, где я могу имитировать эту игру. Затем я хочу, чтобы выяснить некоторые стратегии, которые помогут вам получить более высокие баллы, или если я могу узнать об оптимизации игры, как капли 7. Я не уверен, с чего начать, и я хотел бы вашу помощь. Я знаю, как код в Python, но не очень хорошо, классы запутать меня немного, так что я просто придерживаться функций. Спасибо за ваше понимание
Edward Mordechay
1

голосов
1

ответ
63

Просмотры

How can I implement the function “divide” in a functional Divide-And-Conquer Java algorithm?

I am trying to implement a functional version of the Quicksort algorithm. My professor asked me to keep this as the signature: public static List myQuickSort(Function trivial, Function solve, Function divide, Function combine, List input) I created an auxiliary class named Pair, which goes like this: public class Pair { List first; List second; Pair(List f, List s) { first = f; second = s; } public static Pair div(List input) { int pivot = (int) input.get(0); List a = new ArrayList(); List b = new ArrayList(); for(int i=1; i a.size()==1; Function divide = (a) -> Pair.div(input); Function combine = (a) -> Stream.concat(a.first.stream(), a.second.stream()). collect(Collectors.toList()); Function solve = (a) -> a.get(0); ArrayList output = myQuickSort(trivial, solve, divide, combine, input);
Alessandro Pezzotta
1

голосов
3

ответ
587

Просмотры

Оптимизация алгоритма для определения сдавшего из заранее определенного диапазона

Проблема: У вас есть список (1-D массив) оценки (некоторые номера). У вас есть еще два списка: lowerLimits: список, содержащее значение нижнего предела (ов) upperLimits: список, содержащее значение верхнего предела (ов) Ваша задача состоит в том, чтобы выяснить, сколько подсчеты баллов попадают в инклюзивном диапазоне каждого ( LOWERLIMIT [I], UPPERLIMIT [I]) пара. Пример 1: Исходные данные: забивает = [1,3,5,6,8] lowerLimits = [2] upperLimits = [6] Выход: [3] Пояснение: Три элемента (3,5 и 6) в массиве баллов, попадают внутрь инклюзивный диапазон [2,6] Пример 2: Входы: забивает = [4,8,7] lowerLimits = [2,4] upperLimits = [8,4] Выход: [3,1] Пояснение: Все три элемента (4 , 8 и 7) в массиве баллов, попадают внутрь первого диапазона включительно [2,8] и только один элемент (4) находится в пределах диапазона включительно [4,4]. Таким образом, ответ должен быть возвращен в массив отсчетов [3,1]. Какой алгоритм я пытался до сих пор? 1. Итерации по каждому LOWERLIMIT - UPPERLIMIT пару 2. Для этой пары проверить все оценки значения 3. Повторите шаг 1 до 2 для всех LOWERLIMIT - UPPERLIMIT пара Python 3 Реализации # функции полезности четкости (предложения о работе баллов, lowerLimits, upperLimits): ответ = [ ] для индекса, элемента Перечислит (lowerLimits): манекен = [] для очков в баллах: если оценка> = lowerLimits [индекс] и оценка
sircasms
1

голосов
0

ответ
43

Просмотры

Как рассчитать пересечение множеств элементов между большим числом пользователей в базе данных NoSQL?

Я сталкиваюсь с проблемой эффективности, пытаясь вычислить пересечение множеств элементов между различными пользователями. Допустим, что пользователь, называется Боб, владеет различные элементы, которые он хотел бы торговать с другими предметами другими пользователями самостоятельно. Боб имеет инвентарь и список пожеланий. Теперь, если Боб хочет получить элемент, скажем, пункт А, от его желаний, он должен иметь возможность просматривать все пользователи, которые имеют пункт А в инвентаре. Логически, мы должны показывать только пользователям, которые имеют пункт А в инвентаре и в то же, имеют элементы в их список пожеланий, что Боб имеет в своем инвентаре. Мой подход был для хранения, для каждого элемента в списке желаний, пользователи, которые имеют этот пункт в инвентаре. Это будет структура в базе данных: wishlist_items / Itema / user1 user2 user3 Далее для отображения соответствующих пользователей (которые имеют пункт А в инвентаре и в том же, есть элементы в их списке пожеланий, что Боб имеет в своем инвентаре), я должен получить элементы в их инвентаризации и выполнить пересечение множеств с вишлист на Бобе. Затем сортировать пользователь по наибольшему количеству общих элементов между их инвентаризацией и желаниями Боба. Я считаю, что такой подход должен быть возможным для ограниченного числа пользователей под Itema, однако, окажется крайне неэффективен в масштабе, особенно, когда есть много вещей, а также. Есть ли эффективное решение, чтобы решить эту проблему? Обратите внимание, что я в настоящее время с помощью Firebase для хранения данных, и я не против использования различных технологических стеков. Я должен принести предметы в инвентаре и выполнить пересечение множеств с вишлист на Боба. Затем сортировать пользователь по наибольшему количеству общих элементов между их инвентаризацией и желаниями Боба. Я считаю, что такой подход должен быть возможным для ограниченного числа пользователей под Itema, однако, окажется крайне неэффективен в масштабе, особенно, когда есть много вещей, а также. Есть ли эффективное решение, чтобы решить эту проблему? Обратите внимание, что я в настоящее время с помощью Firebase для хранения данных, и я не против использования различных технологических стеков. Я должен принести предметы в инвентаре и выполнить пересечение множеств с вишлист на Боба. Затем сортировать пользователь по наибольшему количеству общих элементов между их инвентаризацией и желаниями Боба. Я считаю, что такой подход должен быть возможным для ограниченного числа пользователей под Itema, однако, окажется крайне неэффективен в масштабе, особенно, когда есть много вещей, а также. Есть ли эффективное решение, чтобы решить эту проблему? Обратите внимание, что я в настоящее время с помощью Firebase для хранения данных, и я не против использования различных технологических стеков. она окажется крайне неэффективна в масштабе, особенно, когда есть много вещей, а также. Есть ли эффективное решение, чтобы решить эту проблему? Обратите внимание, что я в настоящее время с помощью Firebase для хранения данных, и я не против использования различных технологических стеков. она окажется крайне неэффективна в масштабе, особенно, когда есть много вещей, а также. Есть ли эффективное решение, чтобы решить эту проблему? Обратите внимание, что я в настоящее время с помощью Firebase для хранения данных, и я не против использования различных технологических стеков.
Badie
1

голосов
0

ответ
96

Просмотры

Прямоугольник Упаковка - Subset

Я работаю над алгоритмом, который выясняет, как упаковки прямоугольников в больший прямоугольник. Я знаю, это похоже на проблему прямоугольника упаковки, но моя конкретная проблема имеет несколько причуд; а именно прямоугольники, что я в фитинг только определенную высоту, ширина может (и должен) отличаться таким образом, что прямоугольники, которые разделяют вертикальное перекрытие с другими прямоугольниками будет в конечном итоге, одинаковую ширину по отношению к другим прямоугольников они пересекаются с. Вот лучшие формализации я мог придумать: Учитывая, возможно бесконечное множество R реального числа в диапазоне между -Inf + инф и областью А определяется по точкам (0, -inf), (100, + инф). Для каждого диапазона г в R найти прямоугольник Ar, который пребывает внутри области А с высотой абсом (r1 - r2) и шириной, которая приводит в прямоугольнике, который заполняет как можно больше места по горизонтали, как это возможно без перекрытия любого другого прямоугольника. Вот изображение, показывающее входной набор примера, и ожидаемый результат: Кто-нибудь есть идея, лучший способ приблизиться к этому? У меня есть несколько рабочее решение, но оно не в условиях, где есть много перекрывающихся диапазонов. Вот код: Val laidOutRectangles = mutableListOf () // Прямоугольник определяется x1, y1, x2, y2 диапазонах VAL = mutableListOf () // Диапазон только имеет нижнюю и верхнюю границы Val ширина = 100 ranges.sortedByDescending {it.first } .forEach {диапазон -> // Получаем верх и низ диапазона Валу ниже = range.first Вал верхний = диапазон.
Thomas Cook
1

голосов
1

ответ
164

Просмотры

Найти ближайшее 8-связное расстояние шахматной доски между несколькими парами точек: кратчайший м-путем

Я работаю на бинарных изображений в Python с использованием OpenCV. У меня есть два набора точек: PNodes и Fnodes. Я хочу, чтобы найти ближайший PNode к каждому из Fnodes (кратчайший м-путь); ближе всего в терминах 8-связанного расстояния шахматной доски. В приведенном ниже примере, предположим, что PNodes (подаренные *), являются: (6,1), (6,5) и (5,8). (Индексация начинается с 0, первым элементом является номер строки). Fnodes (обозначенные #) являются: (0,1), (0,9), (1,6), (2,5) и (4,3). импортировать NumPy, как нп In = np.array (([0, 1 #, 0, 0, 0, 0, 0, 0, 0, 1 #, 0], [1, 0, 0, 0, 0, 0, 1 #, 0, 1, 0, 0], [0, 1, 0, 0, 0, 1 #, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0], [0, 1, 1, 1 #, 0, 1, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0 , 0, 1 *, 0, 0], [0, 1 *, 0, 0, 0, 1 *, 0, 0, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0]), DTYPE = "uint8") Distance_Matrix = np.array (([ 0, 6 #, 0, 0, 0, 0, 0, 0, 0, 5 #, 0], [5, 0, 0, 0, 0, 0, 5 #, 0, 4, 0, 0], [0, 4, 0, 0, 0, 4 #, 0, 0, 3, 0, 0], [0, 0, 3, 0, 0, 0, 3, 0, 0, 2, 0], [ 0, 2, 2, 3 #, 0, 2, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, **, 0, 0], [ 0, **, 0, 0, 0, **, 0, 0, 1, 0, 0], [0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0], [ 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0]), DTYPE = "uint8") Я не касается точного значения расстояния, я просто хочу узнать ближайшую пару , Что-то вроде этого: FNODE в (0,1) находится ближе всего к PNode в точке (6,1). FNODE в точке (4,3) находится ближе всего к PNode в точке (6,1). Все расстояния в терминах 8-соединения на расстоянии шахматной доски. Окончательное требование от всего этого процесса: В принципе, я просто хочу, чтобы убедиться, что весь PNodes иметь по крайней мере 1 FNODE, которые лежат в пределах заданного диапазона расстояний (по пути 1s). Пусть PNode (PN_1) имеет FNODE (FN_1), который находится в пределах требуемого диапазона расстояний, я также убедитесь, что PN_1 находится ближе всего к FN_1, а не какой-либо другой PNode. Для лучшего понимания, я прилагаю изображение ниже; Fnodes имеет прямоугольную форму и PNodes является круглым. Я не забочусь о других элементов в этой матрице, за исключением тех, PNodes и Fnodes, как показано. Пусть PNode (PN_1) имеет FNODE (FN_1), который находится в пределах требуемого диапазона расстояний, я также убедитесь, что PN_1 находится ближе всего к FN_1, а не какой-либо другой PNode. Для лучшего понимания, я прилагаю изображение ниже; Fnodes имеет прямоугольную форму и PNodes является круглым. Я не забочусь о других элементов в этой матрице, за исключением тех, PNodes и Fnodes, как показано. Пусть PNode (PN_1) имеет FNODE (FN_1), который находится в пределах требуемого диапазона расстояний, я также убедитесь, что PN_1 находится ближе всего к FN_1, а не какой-либо другой PNode. Для лучшего понимания, я прилагаю изображение ниже; Fnodes имеет прямоугольную форму и PNodes является круглым. Я не забочусь о других элементов в этой матрице, за исключением тех, PNodes и Fnodes, как показано.
Saania
1

голосов
2

ответ
70

Просмотры

How to transfer an outside recursion program into a non-recursive form (using stack not CPS)?

Есть много вопросов о том, как преобразовать рекурсивный в нерекурсивна, и я также могу конвертировать несколько рекурсивных программ в нерекурсивна формы примечания: Я использую обобщенный способ (определяется пользователь Stack), потому что я думаю, что это легко понять, и Я использую Java, поэтому не может использовать GOTO ключевое слово. Вещи не всегда идут так хорошо, когда я встречаюсь с возвратами, я застрял. например, проблема подмножество. и мой код здесь: рекурсивный вызов с петлей, когда я использую определенный пользователь стек, чтобы превратить его в нерекурсивна форме. Я не знаю, как бороться с петлей (в цикле существующей рекурсивный вызов). Я гугле нашел, что есть много способов, такие как КПС. и я знаю, что есть повторяющийся шаблон подмножествя задачи. но я только хочу, чтобы использовать определенный пользователь Stack решить. Может кто-нибудь дать некоторые подсказки, чтобы превратить этот вид рекурсивные (рекурсивный с петлей) в нерекурсивна форме (с помощью определенного пользователя стек, не КП и т.д ..)? Вот мой код рекурсивный к не-возвратному степенному (Симметричному-Traversal), потому что там нет цикла с рекурсивным вызовом, так что я могу легко это сделать. Кроме того, когда рекурсивная программа с возвращаемым значением, я могу использовать ссылку и передать его функцию как пары. из кода, я использую стек, чтобы имитировать рекурсивный вызов, а также использовать «состояние» переменный к следующей точке вызова (потому что Java не позволяет использовать GOTO). Ниже приводится информация, которую я собрал. Кажется, что все из них не удовлетворяет вопрос я уже упоминал (некоторые используют Гото, что Java не допускается, некоторые очень простой рекурсивный означает, что не вложенная рекурсивный вызов или рекурсивный вызов с петлей). 1 Old Dominion University 2 CodeProject ---------------------------------- Split Line -------- ------------------------------ Thks у всех. после того, когда я отправляю вопрос ... Он взял меня всю ночь, чтобы понять это. вот мое решение: нерекурсивно решение проблемы подмножества, а комментарий коды моя идея. Подводить итоги. то, что я застрял перед тем, как иметь дело с Foo-цикла, на самом деле, мы можем просто игнорировать его. потому что мы используем петлю + стек, мы можем сделать простое суждение о том, чтобы соответствовать условиям. мы можем просто игнорировать его. потому что мы используем петлю + стек, мы можем сделать простое суждение о том, чтобы соответствовать условиям. мы можем просто игнорировать его. потому что мы используем петлю + стек, мы можем сделать простое суждение о том, чтобы соответствовать условиям.
wannibar
1

голосов
1

ответ
62

Просмотры

питон код разница во времени работы

Я практиковал на Leetcode, я хочу задать 3 вопроса о кодах время работы. Я заметил, что на Leetcode, даже тот же код будет иметь совсем другое время работы, если представлены несколько раз. И разница огромна, это нормально? Я видел разница в первых раз превосходит 26%, а второй раз превосходит 51%. Это действительно смущает меня, в то время как я пытаюсь выяснить, где я и как хорошо эти коды. Фактические коды: Leetcode p21, удалить элемент это, чтобы удалить все элементы одного значения из списка междунар, без создания нового списка и возвращает длину нового списка. Защиту removeElement (IntList, вал): п = 0, а п <длина (IntList): если IntList [п] == Вал: IntList.pop (п) остальное: п + 1 = возврат Len (IntList) Защиту removeElement2 (IntList, вал): в то время как вал в IntList: IntList.remove (VAL) возвращают LEN (IntList) Вы можете видеть, что я написал две функции, которые будут работать, а второй один так много короче, чем первый, но почему-то первый один оказался быстрее , И мне интересно, почему. Что такое лучший способ узнать, если один набор кодов быстрее, чем другой, не должны представлены Leetcode? Спасибо,
1

голосов
2

ответ
342

Просмотры

Время и пространство Сложность 2 функций

Защиту бар (п): если п == 0: 0 возвращение еще: возвращение п + бар (п-1) Защиту Foo (п): если п == 0: 0 возврат еще: возвращение бар (п) + Foo (п -1) Привет, я только что узнал о пространстве и времени сложности. Может кто-нибудь подтвердить, со мной ли я я право сказать, временная сложность обув О (п ** 2) и пространство сложность обув О (п)? Не слишком уверены о временной сложности как Foo вызовов прутка, который только называет себя один раз, в то время как Foo всегда взывает 2 функции.
Prashin Jeevaganth
1

голосов
1

ответ
457

Просмотры

Применить объект маску для расчета LBP

Я вижу много статей, применяющих LBP для текстуры на основе классификации изображений. Я просто удивляюсь, три вещей об этой технике, что я не мог найти четкие ответы от Google: Как алгоритм вычисляет LBP для пограничных пикселей изображения, которые не имеют достаточное количество соседних пикселей вокруг них. Если у нас есть восемь соседних пикселей, то центральный пиксель будет иметь 256 моделей (59 при использовании мундира). Но если мы увеличиваем соседа размер пикселя (например, 8 или 10), то количество моделей также будет расти, это правильно? В этом случае, как это воздействует на гистограмму расчета? Как мы можем вычислить LBP только для объекта. В частности, если мы хотим, чтобы сравнить объекты на изображениях, нам нужно только вычислить LBP и гистограмму для объектов. Я попытался эту идею с помощью OpenCV гистограммы (который поддерживает маски и Numpy гистограмму Безразлично» т маска поддержки) для LBP выхода, но это не сработало. Любая идея о том, как фильтровать массив LBP на основе маски, а затем мы можем найти гистограмму позже. Спасибо.
Son Vo
1

голосов
1

ответ
60

Просмотры

Что делать, если коммивояжер путешествовал на самолете?

Это кажется интуитивно решить 2D задачи коммивояжера точка-к-точка на глаз с помощью жадного стратегии. Однако мы можем решить только ПБО на глаз, если график топографически точные, например, если А на В 10 и А-С составляет 10, то B в C не может быть 1000. Является ли жадная стратегия еще неоптимальным, когда мы подчиняемся 2D масштабирование, то есть путешествие на самолете? Ниже я сумел создать топографический точный пример, когда жадная стратегия действительно субоптимальный: Начиная с S: Жадный: SBCAS => 2,83 + 4 + 5 + 2,2 => 14,03 Оптимально: SABCS => 2,2 + 3 + 4 + 3,16 = > 12,36 есть ли что-то особенное в приведенном выше примере, который будет общим для всех неоптимальных жадных маршрутов? Может быть использована геометрия, чтобы минимизировать ошибку?
david_adler
1

голосов
1

ответ
148

Просмотры

Как использовать Алгоритм Дейкстры найти больше маршрутов?

Я реализовал алгоритм Дейкстры для поиска кратчайшего пути между 2 точками. Как изменить его, чтобы найти N кратчайших маршрутов? Моя идея состояла в том, чтобы добавить небольшой вес к последнему узлу ранее найденного пути, но это не всегда работает правильно. Есть идеи?
Alexandru Cazacu
1

голосов
0

ответ
298

Просмотры

Последовательное Правило Mining с использованием алгоритма Apriori и другие

Я выполняю Последовательная Rule Mining с использованием алгоритма Apriori и FPA, у меня есть набор данных в Excel, как показано ниже, я загрузить свои данные в панд dataframe, что я использую следующие read_excel команды, как показано ниже. STATION1 Station2 station3 Повторения 0 Singapore Changi Airport (SIN) Терминал 1 Universal Studios Singapore 52 1 Сады у залива Flower Dome Cloud Forest 52 2 Marina Bay Sands Singapore Changi Airport (SIN) Сады у залива 52 3 Сингапур Сингапур Changi Airport (SIN) Сады у залива 51 4 Universal Studios Singapore Сингапур Changi Airport (SIN) Marina Bay Sands 51 Как я должен выполнить шаблон Mining. Я использовал MLxtend для априорных и ассоциации правил, но разреженный ФР станций, за исключением повторы. Я заинтересован в Apriori, GSM, СПАМ и лопату, как я могу добиться этого? ТИА !!!
Shivam
1

голосов
0

ответ
105

Просмотры

Что такое время работы этого алгоритма?

Я делаю проблему кодирования: Учитывая упорядоченный массив, состоящий только из целых чисел, где каждый элемент появляется дважды в течение одного элемента, который появляется один раз за исключением. Найти этот единственный элемент, который появляется только один раз. Примечание: Ваше решение должно работать в O (журнал п) и O (1) пространство. Просто чтобы попробовать это было то, что я написал в Java: открытые статические INT singleNonDuplicate (ИНТ [] Nums) {INT R = НУМС [0]; для (INT I = 1; г <nums.length; я ++) {R = R ^ НУМС [I]; } Вернуть г; } Является ли код выше время выполнения О (п)? Если это O (п), то почему leetcode принял мое решение ??
1

голосов
0

ответ
334

Просмотры

Извлечение элементов из frozenset

Я пытался разработать априорной алгоритм, использующий эти данные. Я был в состоянии получить ассоциации и уверенность для обеих пар и троек, но у меня возникают проблемы форматирования вывода и извлечения правильных элементов. Я побежал алгоритм на этом тестовых данных. Его только подмножество исходного набора данных. В настоящее время выход выглядит следующим образом: [[frozenset ({ 'GRO73461'}), frozenset ({ 'ELE17451'}), 1,0], [frozenset ({ 'GRO99222'}), frozenset ({ 'ELE17451'}), 0,8125 ], [frozenset ({ 'ELE17451'}), frozenset ({ 'GRO99222'}), 0,5], [frozenset ({ 'ELE17451'}), frozenset ({ 'GRO73461'}), 0,38461538461538464]] frozenset ({» GRO73461' , 'ELE17451'}), 0,8], [frozenset ({ 'GRO73461'}), frozenset ({ 'DAI22896', 'ELE17451'}), 0,8] Как вы можете видеть своего рода беспорядок. Список упорядочен на основе уверенности в порядке убывания. Я хочу, чтобы отделить часто пары от частых троек и организовать вывод так, что он выглядит следующим образом: OUTPUT A FRO11987 FRO12685 0,4325 FRO11987 ELE11375 0,4225 FRO11987 GRO94758 0,4125 FRO11987 SNA80192 0,4025 FRO11987 FRO18919 0,4015 OUTPUT B FRO11987 FRO12685 DAI95741 0,4325 FRO11987 ELE11375 GRO73461 0,4225 FRO11987 GRO94758 ELE26917 0,4125 FRO11987 SNA80192 ELE28189 0,4025 FRO11987 FRO18919 GRO68850 0,4015 Где выше топ-5 частых пар и 5 верхние частые троек, основанные на доверии. Основная область у меня возникают проблемы с является различение между частыми парами и тройками, а затем извлечением предметов из frozensets таким образом, что они находятся в приведенном выше формате. обратный = True) тройки = [] парном = [] = 0, а Len (тройки) <5: если я == LEN (правила): сломаться, если Len (правила [I] [1]) == 2: тройки. правила добавления ([I]) г + 1 = у = 0, а Len (парный) <5: если J == LEN (правила): перерыва, если Len (правила [J] [1]) == 1: doubles.append ( правила [J]) J + = 1, если __name__ == '__main__': главный () Любые консультации по этому вопросу ценится. Если у вас есть какие-либо вопросы о процессе коды или мысли, пожалуйста, дайте мне знать. Извиняюсь заранее, если есть какая-либо ошибка по невнимательности. Спасибо за чтение сломаться, если Len (правила [J] [1]) == 1: doubles.append (правила [J]) J + = 1, если __name__ == '__main__': главный () Любые консультации по этому вопросу ценится. Если у вас есть какие-либо вопросы о процессе коды или мысли, пожалуйста, дайте мне знать. Извиняюсь заранее, если есть какая-либо ошибка по невнимательности. Спасибо за чтение сломаться, если Len (правила [J] [1]) == 1: doubles.append (правила [J]) J + = 1, если __name__ == '__main__': главный () Любые консультации по этому вопросу ценится. Если у вас есть какие-либо вопросы о процессе коды или мысли, пожалуйста, дайте мне знать. Извиняюсь заранее, если есть какая-либо ошибка по невнимательности. Спасибо за чтение
Srikar Murali
1

голосов
2

ответ
279

Просмотры

Алгоритм заказа задач с зависимостями

В частном проекте с открытым исходным кодом я сталкиваюсь со следующей проблемой: Есть множество задач для выполнения. Некоторые из этих задач будут иметь аннотации, что они должны быть выполнены после того, как один или более конкретными другими задач, которые они должны быть выполнены до одного или нескольких конкретных других задач, я ищу для простого алгоритма, как построить ориентированный граф из этой информации, затем может быть использован для обнаружения цикла и выполнения задач задач в порядке, что позволяет уважает все эти условия о порядке их выполнения. Q: Что бы быть эффективным, хороший способ построить такой график? Спасибо за помощь. Примечание: Очевидно, нам потребуются два дополнительных узлы в графе: A начального узла и конечный узел. Давайте назовем их START и END. Очевидно, что узел без зависимости должен в конечном итоге в конструкции, такие как START -> A -> END.
Regis May
1

голосов
0

ответ
70

Просмотры

pop.size argument in GenMatch() respectively genoud()

Я использую генетическое сопоставление в R с помощью GenMatch для того, чтобы найти сопоставимые лечения и контрольные группы для оценки эффекта лечения. Код по умолчанию для сравнения выглядит следующим образом: GenMatch (Tr, X, BalanceMatrix = X, estimand = "ATT", М = 1, вес = NULL, pop.size = 100, max.generations = 100, ...) описание для pop.size аргумента в пакете: Население Размер. Это число лиц, Жену использует для решения задачи оптимизации. Теоремы, доказывающие, что генетические алгоритмы поиска эффективных решений асимптотичны численности населения. Поэтому важно, чтобы это значение было не мало. См Жену для более подробной информации. Глядя на gnoud дополнительное описание: ... Есть несколько ограничений на то, что значение этого числа может быть. Независимо от того, что население размер запросы пользователей, количество автоматически регулируется, чтобы убедиться, что соответствующие ограничения выполнены. Эти ограничения возникают в том, что требуется от нескольких операторов. В частности, операторы 6 (Simple Crossover) и 8 (эвристический Crossover) требуют четного числа людей, чтобы работать на то, что они требуют два родителей. Таким образом, переменная pop.size и множество операторов должны быть такими, чтобы эти три оператора имеет четное число людей, чтобы работать с. Если этого не происходит, численность населения автоматически увеличивается до тех пор, это ограничение не будет удовлетворено. Я хочу знать, как gnoud (соответственно GenMatch) включает в себя аргумент размера населения. Есть ли алгоритм случайного выбора п лиц из населения для оптимизации? Я посмотрел на описание пакета и исходного кода,
CC89
1

голосов
1

ответ
99

Просмотры

Все перестановки в диапазоне с параметрами

Я пытаюсь найти эффективный алгоритм для решения следующей задачи. Дайте диапазон чисел от 1..N и некоторых произвольных чисел К и М, найти все возможные перестановки в заданном диапазоне. Где К представляет собой число элементов, и М представляет собой минимальное расстояние между элементами. Итак, давайте рассмотрим пример: массив = 1,2,3,4,5,6,7,8 К = 2 М = 2, так что выход тогда будет (3,5) (3,6) (4,6 ), так что вы можете увидеть, как увеличивается сложность, если K и M становится все больше. Приветствия.
hasskell
1

голосов
1

ответ
300

Просмотры

Почему сложность слияния M отсортирован массивов линейное время?

Предположим, мы хотим выполнить внешний вид и имеют М число блоков, отсортированных, где каждый блок содержит K сопоставимые элементы такие, что п = Мк. к в этом случае также относится к максимальному количеству элементов, которые могут поместиться в памяти для сортировки и п общее число элементов для сортировки. Затем с помощью функции слияния в сортировках слияния, каждый элемент должен быть по сравнению со всеми другими элементами из других блоков, что дает мне O (M) сравнения для одного элемента. Так как мы должны сделать это для всех элементов, мы будем иметь O (M * Mk) = O (M ^ 2 * к) = O (нмоль) временная сложность. Это, как представляется, линейным на первый, но предположим, что в худшем случае может поместиться только 1 элемент в памяти. Таким образом, мы имеем M = N блоков, а время сложность O (N ^ 2) непосредственно. Как слияние дает линейное время во внешнем роде? Кроме того, в случае, когда к = 1,
oldselflearner1959
1

голосов
1

ответ
116

Просмотры

Улучшение Flappy Bird Genetic Algorithm населения

Я пытаюсь создать генетический алгоритм, который учится играть Flappy птицы. У меня есть игра работает, это мой класс Bird: общественный класс Bird расширяет плеер {общественного NNetwork сеть; общественный Птица (с плавающей точкой х, у поплавка, поплавок velX, плавать Vely, ширину, высоту поплавка с плавающей точкой) {супер (х, у, velX, Vely, ширина, высота); NTopology тий = новый NTopology (3,5,1); сеть = новый NNetwork (тая, 0.1f, 0.1f, правда); } Общественный недействительный сброс () {setAlive (истина); Setx (0f); SetY (1000F); setVelY (0f); } / ** * Питается параметры в нейронную сеть * разница @param dyTop высоты до верхнего края * разница высот @param dyBot до нижнего края * @param йх расстояние до препятствия * @return верно, если птица думает, что это будет хорошо прыгать * / публичный недействительным прыжок (плавать dyTop, плавать dyBot, плавать ах) {network.feed (dyTop, dyBot, дх); если (network.getOutputs () [0]> 0f) super.flap (); } Общественного недействительными обновления (плавать dyTop, плавать dyBot, плавать ах) {super.update (); прыжок (dyTop, dyBot, дх); } Общественного Птица мутируют () {Птица RET = это; ret.network.mutate (); ret.setAlive (истина); ret.setScore (0f); ret.setX (0); ret.setY (1000); вернуться в отставке; }} И эти мутации населения функция sortBirds общественных ArrayList (ArrayList птица) {ArrayList RET = птицы; Collections.sort (в отставке, новый компаратор () {@Override общественного ИНТ сравнения (Птичий птица, птица t1) {вернуться bird.getScore () <t1.getScore () 1: -1;}}); lastBestScore = ret.get (0) .getScore (); вернуться в отставке; } общественного заселить ArrayList (ArrayList птиц) {птицы = sortBirds (птицы); Птица bestBird = this.birds.get (0); Птица [] Reta = новый птица [birds.size ()]; birds.toArray (РЕТ); Reta [0] = bestBird; для (INT I = 0; я <3; я ++) {// заменить 3 худших птиц с мутациями лучшей (всегда есть по крайней мере, 5 птиц) ReTa [retA.length-1-я] = bestBird.mutate (); } ArrayList RET = новый ArrayList (Arrays.asList (РЕТ)); для (Bird B: RET) {b.reset ();} ++ поколения; вернуться в отставке; } Функция Bird.reset () просто возрождает птицу и устанавливает его обратно на старт. Когда каждая птица мертва, заселить () называется. В теории, эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) для (INT I = 0; я <3; я ++) {// заменить 3 худших птиц с мутациями лучшей (всегда есть по крайней мере, 5 птиц) ReTa [retA.length-1-я] = bestBird.mutate (); } ArrayList RET = новый ArrayList (Arrays.asList (РЕТ)); для (Bird B: RET) {b.reset ();} ++ поколения; вернуться в отставке; } Функция Bird.reset () просто возрождает птицу и устанавливает его обратно на старт. Когда каждая птица мертва, заселить () называется. В теории, эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) для (INT I = 0; я <3; я ++) {// заменить 3 худших птиц с мутациями лучшей (всегда есть по крайней мере, 5 птиц) ReTa [retA.length-1-я] = bestBird.mutate (); } ArrayList RET = новый ArrayList (Arrays.asList (РЕТ)); для (Bird B: RET) {b.reset ();} ++ поколения; вернуться в отставке; } Функция Bird.reset () просто возрождает птицу и устанавливает его обратно на старт. Когда каждая птица мертва, заселить () называется. В теории, эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) Длина-1-я] = bestBird.mutate (); } ArrayList RET = новый ArrayList (Arrays.asList (РЕТ)); для (Bird B: RET) {b.reset ();} ++ поколения; вернуться в отставке; } Функция Bird.reset () просто возрождает птицу и устанавливает его обратно на старт. Когда каждая птица мертва, заселить () называется. В теории, эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) Длина-1-я] = bestBird.mutate (); } ArrayList RET = новый ArrayList (Arrays.asList (РЕТ)); для (Bird B: RET) {b.reset ();} ++ поколения; вернуться в отставке; } Функция Bird.reset () просто возрождает птицу и устанавливает его обратно на старт. Когда каждая птица мертва, заселить () называется. В теории, эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его) эти функции должны улучшить свое население в течение долгого времени, но когда птица лучше, чем другие, то следующее поколение плохо снова. Разве я неправильно, как генетические алгоритмы работы или есть ошибка в коде? (Если вам нужно больше кода я могу разместить его)
Finni
1

голосов
1

ответ
60

Просмотры

Получить различные комбинации из наборов

У меня есть различные наборы, идентифицированных некоторые имена, против которых существует значение. Я использую построить как словарь для хранения таких объектов. Как мой выход мне нужно все возможные комбинации значений, которые могут быть сгенерированы из этого входного синтаксиса. В моих попытках, я разработал подход, основанный на указательный такой, что если индексы правильно манипулировать, я бы получить необходимые выходные формы, аналогичного пример. Я понимаю, что он мог бы использовать рекурсию, но я не уверен, как идти об этом. Является ли это общепризнанная проблемой? Вы можете найти код ниже: с помощью системы; используя System.Collections.Generic; Пространство имен Rextester {общественного класса Program {частный статический словарь dataAtIndex (словарь iArgs, словарь iArgIndex) {словарь oConditionKeys = новый словарь (); Еогеасп (вар vArgName в iArgs. Клавиши) {INT индекс = iArgIndex [vArgName]; Строка argValue = iArgs [vArgName] [индекс]; oConditionKeys.Add (vArgName, argValue); } Вернуть oConditionKeys; } Частных статических аннулируются testFunc (Словарь iArgs, реф Список oListSelectKeys) {словарь argIndex = новый словарь (); Еогеасп (вар vArgName в iArgs.Keys) {argIndex.Add (vArgName, 0); } oListSelectKeys.Add (dataAtIndex (iArgs, argIndex)); } государственной статической силы Main (string []) {mainargs словарь Args = новый словарь (); Список listArgData1 = новый список (); listArgData1.Add ( "1 => arg0"); listArgData1.Add ( "1 => Arg1"); listArgData1.Add ( "1 => Arg2"); Список listArgData2 = новый список (); listArgData2.Add ( "2 => arg0"); listArgData2.Add ( "2 => Arg1"); Список listArgData3 = новый список (); listArgData3.Add ( "3 => arg0"); listArgData3.Add ( "3 => Arg1"); listArgData3.Add ( "3 => Arg2"); listArgData3.Add ( "3 => Arg3"); args.Add ( "Param1", listArgData1); args.Add ( "Param2", listArgData2); args.Add ( "Param3", listArgData3); Console.WriteLine ( "Ввод данных:"); Еогеасп (вар vKey в args.Keys) {Console.Write (vKey + ":"); Еогеасп (вар VDATA в арг [vKey]) {Console.Write (Vdata + ",«); } Console.WriteLine (); } Console.WriteLine (); Список listSelectKeys = новый список (); testFunc (арг, реф listSelectKeys); Количество INT = 0; Console.WriteLine ( "Выходные данные:"); Еогеасп (вар Velem в listSelectKeys) {Console.Write (кол ++ + ":"); Еогеасп (вар vKey в vElem.Keys) {Console.Write ( "(" + vKey + "" + Velem [vKey] + ")"); } Console.WriteLine (); }}}} Вывод должен быть, как: 0: (Param1, 1 => arg0) (param2, 2 => arg0) (param3, 3 => arg0) 1: (Param1, 1 =>
user2338150

Просмотр дополнительных вопросов