Size: a a a

2020 September 10

V🇺

Vladislav 🇺🇸🚜🇷🇺... in pro.algorithms
там actor-critic совмещенный с MCTS
источник
2020 September 12

D

Dim in pro.algorithms
товарищи помогите найти описание протокола CCcam
источник
2020 September 13

ЕВ

Евгений Вознесенский... in pro.algorithms
Ребят, а если у меня есть массив, который содержит 0, 1 и нужно разделить на 3 не пустых части так, чтобы было одинаковое количество нулей во всех частях.
Подсчитать количество способов, то какие здесь идеи?

Можно попробовать поставить границы слева и справа и двигать, пока не сомкнуться. Если одинаковое количество, то + 1 способ
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Это хороший подход?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Разделить прям по индексах, тип сохраняя последовательность
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Евгений Вознесенский
Ребят, а если у меня есть массив, который содержит 0, 1 и нужно разделить на 3 не пустых части так, чтобы было одинаковое количество нулей во всех частях.
Подсчитать количество способов, то какие здесь идеи?

Можно попробовать поставить границы слева и справа и двигать, пока не сомкнуться. Если одинаковое количество, то + 1 способ
Просто перемножить количество единиц между n/3 и n/3+1 и количество между 2n/3 и 2n/3+1?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
🤔🤔
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Сейчас подумаю, спасибо
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Evgenii Zheltonozhskii🇮🇱
Просто перемножить количество единиц между n/3 и n/3+1 и количество между 2n/3 и 2n/3+1?
Ну там +1 кажется
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
А почему это будет работать, не подскажите?
источник

MB

Mikail Bagishov in pro.algorithms
Евгений Вознесенский
А почему это будет работать, не подскажите?
Наблюдение 1. Ты знаешь, X = сколько нулей будет в каждой из трех частей (общее число нулей, деленное на 3).
Наблюдение 2. Если ты знаешь номер нуля среди другий нулей, то ты знаешь, в какую из частей он попадет (если номер от 0 до X, то в первую, если от Х до 2Х, то вторую, от 2Х до 3Х в третью).
источник

MB

Mikail Bagishov in pro.algorithms
Значит (Х-1)-ый ноль точно лежит в первой части, а (Х)-ый во второй, значит граница где-то между.
То же самое про вторую и третью часть
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Аа, спасибо.
Не принял во внимание первое наблюдение
Edited: я понял
источник

NB

Nik Bond in pro.algorithms
Всем привет.
Кто может подсказать, как сделать обход B-дерева итеративным способом без рекурсий?
Вот пример рекурсивного алгоритма https://stackoverflow.com/questions/2799966/how-to-traverse-a-btree
Но не могу найти примеров итеративного
источник

NB

Nik Bond in pro.algorithms
Nik Bond
Всем привет.
Кто может подсказать, как сделать обход B-дерева итеративным способом без рекурсий?
Вот пример рекурсивного алгоритма https://stackoverflow.com/questions/2799966/how-to-traverse-a-btree
Но не могу найти примеров итеративного
Дополнения:
1. Мне нужен порядок LNR (in-order)
2. Ноды дерева однонаправленные, т.е. ссылки есть только на дочерние ноды, но не на родительскую

И контекст для избежания возможной XY проблемы:
B-Tree деревья мне нужны для работы с btrfs, где метаинформация хранится именно в них.
Итеративный алгоритм мне нужен для ленивой реализации. Я использую раст и здесь это делается итераторами, соответственно рекурсивный алгоритм мне не подхоит
источник

DB

Dmitry Baynak in pro.algorithms
ну, если рекурсивные структуры хочется обходить нерекурсивно, то, наверно, нужно себе эмулировать стек

заходим в вершину, если есть вершина "ниже" и "левее" - кладем что-то типа континуации на стек для текущей вершины (чтобы потом продолжить эту вершину обходить с правильного места) и кладем на стек ту самую вершину "ниже" и "левее"
если таких вершин больше нет, то отмечаем себя как посещенную
если есть вершина "ниже" и "правее", то нужно заходить в них (но сначала "посетить" себя; почему нужно - все меньшие уже вроде были посещены) и тоже себя же складывать на стек (если останутся ещё вершины для посещения)

можно складывать и тупо все вершины для обхода сразу при заходе в вершину, но так по памяти выглядит дороже

стоимость по памяти выглядит как O(глубина дерева)
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
Ребят, а можно вопрос по числам.

Пусть нам нужно максимизировать k для заданных A >= 0, B >= 0:
4a + b = k^2, a <= A, b <= B.

Рассмотрим случай B > 0
Я утверждаю, что тогда
k = floor(sqrt(4*A+B))

То есть мы подставляем максимальные a, b и если мы не получаем полный квадрат, то мы точно сможем подобрать a, b так, чтобы в сумме получить квадрат числа на единицу меньше.

Вроде, похоже на правду, так как квадрат любого числа либо 4*p, либо 4*p +1.
Может, кто-то опровергнуть такое утверждение?
источник

ЕВ

Евгений Вознесенский... in pro.algorithms
А то не уверен, что смогу доказать...
источник

V🇺

Vladislav 🇺🇸🚜🇷🇺... in pro.algorithms
Евгений Вознесенский
Ребят, а можно вопрос по числам.

Пусть нам нужно максимизировать k для заданных A >= 0, B >= 0:
4a + b = k^2, a <= A, b <= B.

Рассмотрим случай B > 0
Я утверждаю, что тогда
k = floor(sqrt(4*A+B))

То есть мы подставляем максимальные a, b и если мы не получаем полный квадрат, то мы точно сможем подобрать a, b так, чтобы в сумме получить квадрат числа на единицу меньше.

Вроде, похоже на правду, так как квадрат любого числа либо 4*p, либо 4*p +1.
Может, кто-то опровергнуть такое утверждение?
> То есть мы подставляем максимальные a, b и если мы не получаем полный квадрат, то мы точно сможем подобрать a, b так, чтобы в сумме получить квадрат числа на единицу меньше.
Это похоже на правду
> k = floor(sqrt(4*A+B)) -1
а вот формула какая-то странная
источник

V🇺

Vladislav 🇺🇸🚜🇷🇺... in pro.algorithms
зачем там -1?
источник