Size: a a a

2020 July 18

KK

Kirill Kaymakov in pro.algorithms
Dmitry Kozyrev
Я lomsat gelral до сих пор через мердж сетов не сдал
Я вроде полгода назад с прочтения и минут за 5 сдал именно мерджем
источник

ПК

Паша Калугин... in pro.algorithms
Vladik Milshin
Можно проще. Давай просто для каждой пары (ak, bk) прибавим 1 ко всем ребрам на пути, если мы научимся это делать быстро, то мы решим задачу. Подвесим граф. Чтобы прибавить 1 к пути от a до b давай найдем их общего предка (LCA) p и прибавим 1 на пути от a до p и на пути от b до p. Но тут уже просто, давай заведем массив, назовем его kek, чтобы обработать путь [a, p] мы сделаем kek[a]++, kek[p]--. Тогда как нетрудно понять для ребра (u, v) (u предок v) ответом будет что-то типа -kek[u] + ∑kek[s], где сумма берется по всем вершинам в поддереве v. Как-то так
Зашло
источник

N

Nikolay in pro.algorithms
Кто знает подскажите . Какие сортировки используются в промышленных системах ? В базах данных , например или кэшах.
источник

CD

Constantine Drozdov in pro.algorithms
разные
источник

N

Nikolay in pro.algorithms
Например ?
источник

CD

Constantine Drozdov in pro.algorithms
Nikolay
Например ?
Решение задачи зависит от задачи
источник

CD

Constantine Drozdov in pro.algorithms
Если я вам скажу qsort в MS версии std что вам это скажет?
источник

N

Nikolay in pro.algorithms
Constantine Drozdov
Если я вам скажу qsort в MS версии std что вам это скажет?
Мне кажется странным использовать qsort. Она же не cache-oblivious algorithm?
источник

CD

Constantine Drozdov in pro.algorithms
Nikolay
Мне кажется странным использовать qsort. Она же не cache-oblivious algorithm?
так я и говорю, что это вам ничего не скажет, потому что там в коде встречается qsort, heapsort и insertion
источник

N

Nikolay in pro.algorithms
Constantine Drozdov
так я и говорю, что это вам ничего не скажет, потому что там в коде встречается qsort, heapsort и insertion
а почему там 3 разные встречаются?
источник

CD

Constantine Drozdov in pro.algorithms
Nikolay
а почему там 3 разные встречаются?
потому что решение задачи зависит от задачи, говорю
источник

m

magras in pro.algorithms
Nikolay
а почему там 3 разные встречаются?
У Александреску был хороший толк на последнем cppcon. Он как раз оптимизировал std::sort.
https://www.youtube.com/watch?v=FJJTYQYB1JQ
источник

М

Мохаммад Реза... in pro.algorithms
Hi, Anybody here work on MapReduce?
источник

V

Vladimir in pro.algorithms
Всем привет.

Можете подсказать как можно разделить массив по равенству на две части?
источник
2020 July 19

NF

Nikita Fedorov in pro.algorithms
Есть дефолтная задача удовлетворения ограничений (переменные, домены, ограничения, ограничения зависящие от других ограничений).
Что-то вроде этого
A = (f1, f2, f3, f4) => f2 + f3 > f1.length && !!f4;
B = (f2, f3, A) => (f3 > 15 ? f2 > 5 : A);
C = (f2, f4) => (f4 === 5 ? !f2 : true);
D = (f1, f4) => (f4 === 4 ? !f1 : true);

Изначально все f* имеют какие-то значения.
1) При изменении одного из f* необходимо эффективно пересчитать ограничения.
2) Необходимо уметь предсказать "какую переменную нужно изменить и по каким условиям, чтобы удовлетворить ограничения", условие - это поддерево ограничения, т.е. для f2 в C наиболее релевантным было бы !f2 (это предположение).

Вариант решения, которое я предполагаю сейчас:
1) Построить матрицу смежности (Dependency graph, это не очень сложно):
  f1: A D
 f2: A B C
 f3: A B
 f4: A C D

2) Развернуть его в что-то вроде(как это сделать большая загадка для меня):
f1: {
A: {
 root: f2 + f3 > f1.length, // for  f2 + f3 search all constraints with f2 + f3? no. Ref constraints with f2, f3 and set as dict.
 deps: {
   f2: {
     B: f3 > 15 ? f2 > 5, // берем выражение от переменной вверх до result, т.к. оно содержит все реальные зависимости
   },
   f3: {
     B: f3 > 15, // отбрасываем те его части, которые не связаны с этой переменной??
   }
 },
},
D: {
 root: f4 === 4 ? !f1,
 deps: {
   f4: {
    C: { ...},
    D: { ... },
   }
 }
}
}

3) Показывать пользователю словесное представление условий f2 + f3 > f1.length в порядке глубины. Предлагать перейти к редактированию значений в том же порядке.

Это(само предсказание пользователю) похоже можно решить с PageRank(graphbolt). Но я очень смутно вижу как решать все в целом.
https://github.com/pdclab/graphbolt
https://sci-hub.st/10.1145/3302424.3303974
https://sci-hub.st/10.1145/3093336.3037748
источник

NF

Nikita Fedorov in pro.algorithms
Vladimir
Всем привет.

Можете подсказать как можно разделить массив по равенству на две части?
по равенству? отсортировать что ли?)
источник

М

Манкурт Кобейн... in pro.algorithms
Vladimir
Всем привет.

Можете подсказать как можно разделить массив по равенству на две части?
Думаю, решение придёт само сразу, как только ты нормально сформулируешь, что тебе нужно
источник

NF

Nikita Fedorov in pro.algorithms
Манкурт Кобейн
Думаю, решение придёт само сразу, как только ты нормально сформулируешь, что тебе нужно
после долгих поисков пеперов по теме "итерационные вычисления в excel" я так и не нашел того как правильно разбить формулы в Dependency graph и проранжировать, пушто они все просто пишут "#error" если в лоб что-то не посчиталось.
источник

В

Владимир in pro.algorithms
Nikita Fedorov
Есть дефолтная задача удовлетворения ограничений (переменные, домены, ограничения, ограничения зависящие от других ограничений).
Что-то вроде этого
A = (f1, f2, f3, f4) => f2 + f3 > f1.length && !!f4;
B = (f2, f3, A) => (f3 > 15 ? f2 > 5 : A);
C = (f2, f4) => (f4 === 5 ? !f2 : true);
D = (f1, f4) => (f4 === 4 ? !f1 : true);

Изначально все f* имеют какие-то значения.
1) При изменении одного из f* необходимо эффективно пересчитать ограничения.
2) Необходимо уметь предсказать "какую переменную нужно изменить и по каким условиям, чтобы удовлетворить ограничения", условие - это поддерево ограничения, т.е. для f2 в C наиболее релевантным было бы !f2 (это предположение).

Вариант решения, которое я предполагаю сейчас:
1) Построить матрицу смежности (Dependency graph, это не очень сложно):
  f1: A D
 f2: A B C
 f3: A B
 f4: A C D

2) Развернуть его в что-то вроде(как это сделать большая загадка для меня):
f1: {
A: {
 root: f2 + f3 > f1.length, // for  f2 + f3 search all constraints with f2 + f3? no. Ref constraints with f2, f3 and set as dict.
 deps: {
   f2: {
     B: f3 > 15 ? f2 > 5, // берем выражение от переменной вверх до result, т.к. оно содержит все реальные зависимости
   },
   f3: {
     B: f3 > 15, // отбрасываем те его части, которые не связаны с этой переменной??
   }
 },
},
D: {
 root: f4 === 4 ? !f1,
 deps: {
   f4: {
    C: { ...},
    D: { ... },
   }
 }
}
}

3) Показывать пользователю словесное представление условий f2 + f3 > f1.length в порядке глубины. Предлагать перейти к редактированию значений в том же порядке.

Это(само предсказание пользователю) похоже можно решить с PageRank(graphbolt). Но я очень смутно вижу как решать все в целом.
https://github.com/pdclab/graphbolt
https://sci-hub.st/10.1145/3302424.3303974
https://sci-hub.st/10.1145/3093336.3037748
Не понял логики написанного, что это за язык? Но предположил, что здесь ориентированный граф с весами? Значит матрица смежности будет иметь члены бесконечности, их нужно определить что бы при переборе с использованием промежуточных звеньев сравнивать.
источник

NF

Nikita Fedorov in pro.algorithms
Владимир
Не понял логики написанного, что это за язык? Но предположил, что здесь ориентированный граф с весами? Значит матрица смежности будет иметь члены бесконечности, их нужно определить что бы при переборе с использованием промежуточных звеньев сравнивать.
это js(ts) в начале по крайней мере, немного магии транспиляции и из этого получится Dependency graph =)
источник