Чи дозволений нуль як вага краю у зваженому графі?


60

Я намагаюся написати сценарій, який генерує випадкові графіки, і мені потрібно знати, чи може край у зваженому графі мати значення 0.

насправді має сенс, що 0 можна використовувати як вагу краю, але я працював з графіками протягом останніх кількох днів, і я ніколи не бачив приклад цього.

введіть тут опис зображення


28
Якщо негативні значення "дозволені", то чому б не нуль? :)
Дерек 朕 會 功夫

5
Так само як швидкий приклад, якщо позитивні ваги являють собою чистий витрата палива під час руху з одного вузла на інший, то негативні ваги можуть представляти чисту заправку. Нульова зважена грань - це місце, де витрачене паливо точно компенсується заправкою.
JW

1
@DavidRicherby Я вважаю, що справжнє питання тут є, наприклад, "чи правильний алгоритм X при наявності ваги нульових ребер". Інакше, що таке контекст? Відповідь може бути або так, або ні, залежно від деталей. Питання типу "чи може масив містить нулі" настільки ж значущий.
Juho

1
@Juho: О, це все добре. Це як запитати, чи може число бути негативним. Вам здається очевидним, що це залежить від контексту, але люди впевнені, що це було очевидно, поки негативні цифри не з'явилися. Навіть нуль не був очевидним.
Мехрдад

1
Залежно від того, що ви хочете зробити, ваги можуть навіть не бути реальними цифрами. Наприклад, якщо ваш графік представляє ланцюг змінного струму, ваги можуть бути фасорами, а це складні числа.
user2357112

Відповіді:


165

Дозволений ким ? Не існує Центральної графічної адміністрації, яка б вирішила, що можна, а що не можна робити. Ви можете визначати об'єкти будь-яким зручним для вас способом, якщо вам зрозуміло, що таке визначення. Якщо крайові нульові краї вам корисні, тоді використовуйте їх; просто переконайтесь, що ваші читачі знають, що це ви робите.

Причина, по якій ви зазвичай не бачите ребра з нульовою вагою, полягає в тому, що в більшості контекстів край з нульовою вагою точно рівносильний відсутності краю. Наприклад, якщо ваш графік відображає країни та обсяг торгівлі, здійсненої між ними, межа з нульовою вагою означатиме відсутність торгівлі, що це те саме, що взагалі немає краю. Якщо ваш графік представляє відстані, край з нульовою вагою відповідатиме двом місцям на відстані нуля один від одного, це означає, що вони насправді були би одним і тим же місцем, тому обидва повинні бути представлені однією вершиною. Однак в інших контекстах нульова вага країв може мати сенс. Наприклад, якщо ваш графік представляє дорожню мережу, а ваги краю представляють кількість трафіку, велика різниця між дорогою, якою ніхто не користується (межа з нульовою вагою) і жодною дорогою (без краю).


1
Варто зазначити, що багато алгоритмів графіків чітко вказують, чи працюють вони на графах з негативними вагами чи ні. Я думаю, це пояснює, що дозволяються навіть негативні ваги, залежно від контексту.
Mooing Duck

6
@MooingDuck Я думаю, що питання полягає в тому, що, хоча алгоритми дійсно часто говорять, чи працюють вони для негативних ваг, нульові ваги рідко згадуються. Негативні ваги набагато менш незвичні, ніж нульові, тому в цьому конкретному контексті я не впевнений, що їх потрібно згадати.
Девід Річербі

13

Це залежить від контексту. Загалом, так, можуть бути дозволені краї нульової та навіть негативної ваги. У деяких конкретних випадках вагові кромки можуть бути негативними або строго позитивними (наприклад, алгоритм Діккстри вимагає, щоб ваги не були негативними).


Чи існує специфічний тип графіка, який забороняє нуль? і допускає негативні чи позитивні значення?
Taxellool

9
"Графік, зважений без нуля,".
Том ван дер Занден

10
@Taxellool Математичні об'єкти не встановлені в камені. Не існує фіксованого списку математичних об'єктів із фіксованими іменами, які є єдиними, якими ви можете користуватися.
Девід Річербі

Залежить від того, який алгоритм ви використовуєте. Bellman-Ford приймає нулі, тоді як у Dijkstra їх скасовують
Мануель Азар

5

Як зазначають інші відповіді, ви абсолютно вільні розглянути (або виключити з розгляду) зважені графіки з нульовою вагою.

Однак, на мій досвід, звичайна умова у більшості застосувань зважених графіків полягає в тому, щоб не робити різниці між рештою з нульовою вагою та відсутністю ребра. Однією з причин цього є те, що, як правило, зважені графіки відображаються як узагальнення мультиграфів , що, в свою чергу, є узагальненнями простих графіків.

Зокрема, мультиграф - це графік, який (на відміну від простого графіка ) допускає кілька ребер між однією і тією ж парою вузлів. Оскільки в простому графіку будь-яка пара вузлів завжди з'єднана 0 або 1 ребрами, пара вузлів у мультиграфі може бути з'єднана 0, 1, 2, 3 або більше (але завжди невід'ємне ціле число ) краї.

Узагальнення мультиграфа для забезпечення дробової кількості ребер між парою вузлів, то, природно, призводить до розгляду зважених графіків, і багато алгоритмів, які працюють на довільних мультиграфах, також можуть бути зроблені для роботи над такими зваженими графіками. Але для таких алгоритмів "вага" краю дійсно позначає його кратність . Таким чином, з огляду на таку інтерпретацію, між парою вузлів не може бути змістовного розмежування "немає ребра" та "0 ребер": обидва означають абсолютно те саме.

Звичайно, «зважений графік» за визначенням насправді є лише графіком, який має число, пов’язане з кожним краєм, і цілком можливо інтерпретувати вагу як щось інше, ніж кратність, і в цьому випадку відмінність між ребром і нульовою вагою край справді може бути значущим. Але намагання застосувати стандартні багатогранні алгоритми до таких «дивно зважених графіків» навряд чи дасть результати, які мали б сенс з точки зору альтернативної (не кратності) інтерпретації крайових ваг.


6
Як "типово" відображаються зважені графіки, дуже залежить від вашого поля. Коли я моделюю дорожню мережу як графік для пошуку найкоротших шляхів, ваги представляють відстані, я не починаю з кількох доріг між перехрестями, а потім ввожу дробові дороги.
adrianN

3
@adrianN Хоча в такому графіку відсутність ребра відповідає нескінченному асоційованому значенню, а не нулю.
CodesInChaos

0

Придумайте графік дорожньої системи в Кембриджі, Великобританія, нотатки поділяються між велосипедистами та водіями автомобілів, тому більшість країв. Це значно зменшує витрати на підтримку даних.

Тепер, якщо ми визначимо вагу кромки як час поїздки в секундах, чисто кожен край буде мати два ваги, один - для пиломатеріалів для автомобілів. Деякі ваги будуть нескінченними, оскільки автомобілі заборонено їздити на велосипеді.

Тепер розглянемо два дорожні розв’язки, які дуже близькі один до одного так близько, що їх осідає лише декілька постів, які зупиняють водіїв автомобілів. (Наприклад, перехресна дорога, де їзди на автомобілях можуть повернути лише ліворуч, але велосипедисти можуть їхати в будь-якому напрямку.) Потім ми отримуємо кілька країв з нескінченною вагою від водіїв автомобілів і 0 вагою для велосипедистів.

(Очевидно, що тоді графік може бути попередньо оброблений, щоб створити простіший графік для маршрутизації велосипедистів, перш ніж розробляти найкращі маршрути.)


Я не бачу, як це вирішує питання. Питання задається щодо ребер з нульовою масою. У вашому прикладі (який, до речі, може бути не дуже зрозумілим для людей, не знайомих з Кембриджем), кожен край вже має дві ваги. Тепер, наскільки ви можете визначити зважені графіки, як би ви не хотіли, це добре, але, схоже, це не стосується поставленого питання. Крім того, краї, які ви описуєте, начебто мають дуже малу вагу для велосипедистів: навіть пересування на невелику відстань вимагає ненульової кількості часу.
Девід Річербі

@DavidRicherby, просто припустимо, що часи менше 1 секунди не записуються.
Ян Рінроуз

0

Здається, ви використовуєте вагу, щоб спробувати представити два чітко різних аспекти графіка. Перший полягає в тому, чи насправді графік має репрезентативний (намальований) край, а другий - його фактична вага.

Як ви помітили, ви потрапляєте в заплутану ситуацію, якщо ви використовували "не нульовий" як індикатор наявності краю (і його потрібно намалювати чи перерахувати), в той же час зараз виникла ситуація де нульова вага класифікується як дійсний.

По суті, вам знадобиться інший спосіб представлення наявності краю (якщо припустити, що вам це потрібно, і ви не можете просто створити масив ваг N ^ 2, але тоді ви потрапите в пастку, щоб вирішити, що робити з циклом задні краї ...)


Я не впевнений, що це дійсно відповідає на питання. Питання полягає в тому, чи можуть графіки мати ребра з нульовою вагою; Ваша відповідь здебільшого стосується того, як можна реалізувати структуру даних для графіків з ребрами з нульовою вагою.
Девід Річербі

@DavidRicherby, Закрити; Це (моя відповідь) було більше про те, чому і як питання виникло (або, можливо, виникло) - питання XYProplem. Часто вміння раціоналізувати питання, чому це питання, в першу чергу, може допомогти сильно зрозуміти, як рішення є правильною відповіддю, а не лише якоюсь потворністю
Філіп Оуклі,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.