169 похожих чатов

Есть дефолтная задача удовлетворения ограничений (переменные, домены, ограничения, ограничения зависящие

от других ограничений).
Что-то вроде этого
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

1 ответов

14 просмотров

хм, а тебе в каком-то конкретном случае надо решить или для произвольного/вариативного набора ограничений?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта