Ответы пользователя по тегу Алгоритмы
  • Должно ли количество итераций соответствовать асимптотической сложности алгоритма?

    @res2001
    Developer, ex-admin
    У вас счетчик итераций 2 раза инкрементируется в коде. Во внешнем цикле явно лишний инкремент.
    В случае операций с массивами или списками, для оценки сложности обычно берут количество полных проходов по массиву для получения результата.

    В вашем случае количество итераций равно оценке сложности.

    В общем случае количество итераций приближается с низу к оценке сложности, например поиск по одному двоичному дереву может выполняться за разное число шагов для разных значений.
    Ответ написан
    Комментировать
  • Как сгруппировать времена в Unix-time по дням?

    @res2001
    Developer, ex-admin
    Unix-time - имеете ввиду количество мл.сек. с 01.01.1970?
    Тогда просто разделите значение на количество миллисекунд в сутках (86400000), получите тот же unix-time только в днях.
    Ответ написан
    2 комментария
  • Как удалить элемент массива по заданным условиям без использования циклов?

    @res2001
    Developer, ex-admin
    Почитайте про логическое индексирование.
    Индексацию в вашем примере нужно делать через функцию mod(J, size(x,2))
    В общем как-то так:
    y = x(x(J)<=x(mod(J-n, size(x,2))+1));
    Ответ написан
    5 комментариев
  • Как найти меру похожести двух массивов различной длины в экселе?

    @res2001
    Developer, ex-admin
    Функция КОРРЕЛ в excel возвращает коэффициент корреляции двух массивов. Это, видимо, то что вам нужно.
    Почитать теорию можно в большинстве учебников по ЦОС, например в Айфичере.
    Ответ написан
  • Как структурировать таблицу excel?

    @res2001
    Developer, ex-admin
    По сути это полуручная работа.
    Нужно все таблицы привести к единому виду, а потом загрузить.
    Либо сделать скрипт для загрузки 1 файла, что удалось перенести переносим скриптом, остальное руками.
    Нужно было думать до того как раздавали форму заполнять.
    Как вариант - подготовить универсальную форму и, включив административный ресурс, спустить ее с требованием все привести к общему виду. Форму лучше защитить паролем, оставив для редактирования только нужные ячейки, где можно добавить выбор из возможных вариантов и прочую проверку ввода.
    Ответ написан
    3 комментария
  • Как правильно найти ускорения?

    @res2001
    Developer, ex-admin
    Комментировать
  • Товар во многих категориях, как искать потом?

    @res2001
    Developer, ex-admin
    Заведите третью таблицу для связи товаров и категорий:
    id_product | id_category
    Ответ написан
    Комментировать
  • Как сделать чтобы функция перебирала только целочисленные значения x?

    @res2001
    Developer, ex-admin
    1. вариант - в вашей функции переводить в целые:
    xi = int(round(x))
    Это вариант с округлением. Если убрать round, то будет вариант с отбрасыванием дробной части.

    2. вариант - в вашей функции ничего не делать, если число дробное.
    Приведенная функция is_int - полная лажа. Проверку на целое можно сделать гораздо проще:
    def is_int(x):
      if (x % 1) == 0:
         return true
      else:
        return false


    PS: Вы подаете на вход differential_evolution массив целых чисел, она там что-то с ними делает и в вашей функции появляются дробные числа. Либо вы обходите их приведенными выше способами, либо модифицируете differential_evolution, так чтоб в вашей функции не было дробных чисел.
    Ответ написан
  • В каких случаях эффективнее дублирование кода вместо вызова функции?

    @res2001
    Developer, ex-admin
    Всегда пишите функции.
    Выставьте ключи оптимизации в компиляторе и отдайте этот вопрос на откуп компилятору - они справляются с этим на ура.
    Вручную стоит "инлайнить" только какие-то однострочные функции, указав inline в описании функции. Но обычно компиляторы именно к этим функциям применяют подобную оптимизацию.
    Ответ написан
    8 комментариев
  • Случайное число с заданной вероятностью, какой алгоритм?

    @res2001
    Developer, ex-admin
    Это называется "нормальное распределение". Почитайте вики на эту тему. Там довольно не плохая статья.
    Ответ написан
  • Как рассчитать сложность алгоритма?

    @res2001
    Developer, ex-admin
    Допустим при создании массива из 5 элементов можно добавить if и добавлять значение в начало или конец массива

    Ну одним IF тут не обойтись и не обязательно в начало или в конец добавлять, что варианта добавления между элементами вы не рассматриваете? Это когда в массиве только 1 элемент - будет 1 if. Но и с одним элементом есть проблема - в какое место в массиве вы его поместите изначально, ведь вы, в общем случае, не знаете какие дальше будут элементы.
    Короче - оно примерно то на то и выйдет. Только если в варианте с последующей сортировкой, у вас есть алгоритм быстрой сортировке, то в варианте постоянно отсортированного массива - не известно на сколько хорошо вам удастся это реализовать.
    И не ясно на каком ЯПе вы все это делаете.
    Ответ написан
    Комментировать
  • Как изучать алгоритмы?

    @res2001
    Developer, ex-admin
    Автор вопроса меня заинтриговал. И хотя я не занимаюсь Java, качнул книжку, пробежал первую главу и задания.
    Ну да есть пара упражнений с логарифмами. Если открыть википедию на логарифме, то там увидим, что логарифмы вычисляются с помощью простых рядов, где используются исключительно арифметические операции (надеюсь ваши знания математики на эти действия распространяются (+-/*)?). Решить задание основываясь на этой информации довольно просто.
    Все остальные "умные слова" встречаются в разделе "творческие задачи" и "эксперименты" - там видимо несколько более сложные задания. Хотя я в этом не уверен.
    Слово рекурсия, в контексте книги, имеет прямое отношение к программированию и мало к математике. Означает оно - вызов функцией саму себя. Все задания на рекурсию как раз об этом. В главе про это рассказывается. Разве это так уж сложно? Видимо вы не поняли объяснения в прочитанной главе.
    Можно и другие задания обсуждать. Они все довольно легкие, на какие-то нужно потратить время, какие-то решаются с ходу. Задания где встречаются "умные слова" из математики обычно непосредственно этой математики не касаются. Разве что творческое задание написать библиотеку матричных вычислений, но и там предлагается написать всего 5 простых матричных операций. Откройте википедию на описании матриц и увидите, что эти операции реализуются довольно просто.
    Прежде чем писать жалобные посты на тостер, потратьте хотя бы 10 минут на обдумывание задания и, может быть, небольшой гуглеж. Так же, возможно, нужно перечитать главу.
    Ну и в конце концов, если после обдумывания, перечитывания и гуглежа, вы видите, что без углубления в математику не обойтись - можно просто пропустить задание :-)
    Вы хотите научиться чему то новому без усилий? Так не бывает!
    А может, это вообще не ваше?
    Ответ написан
    Комментировать
  • Какой алгоритм нейронной сети подойдет?

    @res2001
    Developer, ex-admin
    Видимо какой-либо алгоритм экстраполяции вам подойдет больше, чем нейронная сеть.
    Ответ написан
    5 комментариев
  • Как расставить скобки в выражении всеми возможными способами? какова сложность оптимального алгоритма?

    @res2001
    Developer, ex-admin
    Для вашего случая результаты выражения будут различаться от варианта без скобок, только если меняется приоритет операций. Т.е. (1+2)-(3*4) - не дает уникального результата, а (1+2-3)*4 - дает.
    Итого - надо ставить закрывающую скобку перед знаком * или /, а открывающую скобку перед каждой предыдущей операцией.
    Кроме того - когда расставите скобки, нужно брать выражение в скобках и рекурсивно прогонять его по алгоритму, таким образом расставите и вложенные скобки до тех пор пока внутри скобок не окажется простое выражение типа a+b, где уже ничего не поставить.
    Ответ написан
    Комментировать
  • [С++ ]Поставил begin — поставь и end. Как распознать вложения и правильно поставить в коде end?

    @res2001
    Developer, ex-admin
    Никак.
    Если бы можно было легко предугадывать куда вставить end, то все компиляторы давно бы этим занимались, а они почему то этого не делают, а только выдают сообщение об ошибке при этом, как правило указывается строка даже близко не указывающая на то место где не хватает endа.
    И прочитайте внимательно задание - вам не надо вставлять end. Делайте как компилятор - считаете количество begin и end, если не равно - ошибка.
    Ответ написан
    5 комментариев
  • Нужно найти один миллиард знаков после запятой при извлечения корня из 5?

    @res2001
    Developer, ex-admin
    Видимо по методу Ньютона, только нужно еще использовать какую-нибудь библиотеку для работы с большими числами.
    Ответ написан
    Комментировать
  • Как правильно создать sql запрос, php скрипт для подняния постов вверх по списку?

    @res2001
    Developer, ex-admin
    Может быть и не нужно никаких скриптов? Наверняка посты сортируются по времени создания, допусти это поле create_time в базе, тогда просто добавьте в order by поле auto_up:
    ...
    order by auto_up, create_time desc

    Правда это будет больше похоже на заморозку постов, а не на поднятие.
    По какому принципу будете отменять поднятие постов? Если не отменять скоро у вас все первые страницы займут поднятые посты.
    Если вариант выше не подходит, добавьте поле up_time, со значением по умолчанию равным create_time. В скрипте поднятия выставляйте это поле в текущее дату/время, а при отборе постов, точно так же, как и в примере выше, добавьте это поле в список order by.
    Ответ написан
    Комментировать
  • Чем отличается архитектура приложения от его алгоритмов?

    @res2001
    Developer, ex-admin
    Архитектура первична и обычно ее достаточно проблематично изменить в готовом приложении, в отличие от алгоритмов.
    Ответ написан
    Комментировать