LINUX.ORG.RU

Левая дистрибутивность в алгоритмах поиска кратчайших путей

 


0

2

Вот в этой статье https://pdfs.semanticscholar.org/3860/e0242db9b618def3425ab59724711c0345c5.pdf описан обобщённый алгоритм поиска кратчайших путей в графе.

Основная мысль в том, что веса, ассоциированные с дугами графа, и операции над этими весами ⊕ (обобщённая сумма) и ⊗ (обобщённое произведение) должны удовлетворять некоторым алгебраическим законам, и в этом случае алгоритм работает правильно. В частности, веса и операции над ними должны образовывать полукольцо.

Вопрос: зачем нужна левая дистрибутивность суммы над произведением? Иными словами, зачем нужен закон:

a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊗ c)

Можно ли его убрать, что сломается?

Вопрос: зачем нужна левая дистрибутивность суммы над произведением? Иными словами, зачем нужен закон:
a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊗ c)

Можно ли его убрать, что сломается?

Попробуй его убрать и начни передоказывать все леммы/теоремы, начиная с самой первой.

Или ты хочешь, чтобы за тебя тут кто-то разбирался в 30-страничной статье?

Crocodoom ★★★★★
()
Последнее исправление: Crocodoom (всего исправлений: 1)
Ответ на: комментарий от drsm

Есть понятие почтикольца (near-ring) и почтиполя (near-field) в котором присутствует только одна из двух дистрибутивностей.

https://en.m.wikipedia.org/wiki/Near-ring https://en.m.wikipedia.org/wiki/Near-field_(mathematics)

Так что тут дело не в том, что полукольцо «сломается», а в том - можно повторить результаты статьи, ослабив требования на алгебраическую структуру. В этом должен разбираться ТС.

Crocodoom ★★★★★
()
Ответ на: комментарий от Crocodoom

Или ты хочешь, чтобы за тебя тут кто-то разбирался в 30-страничной статье?

Тема распространённая, был ненулевой шанс что кто-то на лоре с этим уже возился. :)

Попробуй его убрать и начни передоказывать все леммы/теоремы, начиная с самой первой.

Я-то этим займусь с горя, но прежде чем идти длинной дорогой надо проверить нет ли короткой.

У меня есть вариант алгоритма для случая, когда отсутствует левая дистрибутивность, и он «работает на практике». Когда я прокручиваю в голове доказательство почему он работает (доказательство на бытовом уровне), то вижу где нужна правая дистрибутивность, но не левая.

skvadrik
() автор топика
Ответ на: комментарий от Crocodoom

Без левой дистрибутивности может потеряться свойство

Нет, это отдельный закон, поскольку (K,1,*) — моноид, в котором 1 это нейтральный элемент. Этот закон в моём примере выполняется.

skvadrik
() автор топика
Ответ на: комментарий от skvadrik

Нет, это отдельный закон, поскольку (K,1,*) — моноид, в котором 1 это нейтральный элемент.

Что-то ты не то говоришь. Как связаны нейтральность единицы и аннигилирующее свойство нуля?

Crocodoom ★★★★★
()
Ответ на: комментарий от skvadrik

Докажи сама, это простое и полезное упражнение. И вот почему:

Определение кольца (самого обычного, для начала) разбивается на три части:

  1. (R, +, 0) — абелева группа
  2. (R, *, 1) — моноид
  3. Дистрибутивность (левая, правая)

Без третьего пункта не было бы никого кольца как единой структуры, а были просто две полностью независимых операции. И лишь дистрибутивность их связывает и объединяет в нечто целостное.

Поэтому все свойства кольца, включая x ⋅ 0 = 0, так или иначе следуют из дистрибутивности. И результаты твоей статьи - тоже, скорее всего.

Так что тебе надо аккуратно разобраться, что именно даёт дистрибутивность в твоей работе, и можно ли обойтись только правой.

Crocodoom ★★★★★
()
Ответ на: комментарий от skvadrik

это свойства нейтрального элемента относительно сложения в коммутативном моноиде

по определению полукольца: ноль - коммутативный аннигилятор относительно умножения (походу даже в не коммутативном полукольце...). для нормального кольца это следует из других аксиом, но в данном случае вводится отдельно.

см тут https://ru.wikipedia.org/wiki/Полукольцо

drsm ★★
()
Последнее исправление: drsm (всего исправлений: 1)
Ответ на: комментарий от Crocodoom

Спасибо за разъяснения.

В статье речь идёт о полукольце, то есть (R,+,0) — коммутативный моноид, а не группа. Свойство x * 0 = 0 * x = 0 предполагается как одна из аксиом, а не выводится.

skvadrik
() автор топика
Ответ на: комментарий от drsm

Да, спасибо. В статье тоже вводится как отдельная аксиома.

skvadrik
() автор топика
Ответ на: комментарий от skvadrik

Действительно, аннигилирующее свойство выводится из дистрибутивности только в кольцах и в левых/правых почтикольцах... Ну что ж, тем проще

Crocodoom ★★★★★
()

А, ясно!

Прямо в статье говорится что не нужна левая дистрибутивность и алгоритм работает без неё:

Our framework can also be generalized by introducing right and left semirings. A right semiring is an algebraic structure similar to a semiring except that it may lack left distributivity.

Плохо читала. Всем спасибо. :D

skvadrik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.