Czy zero jest dozwolone jako waga krawędzi na wykresie ważonym?

60

Próbuję napisać skrypt, który generuje losowe wykresy i muszę wiedzieć, czy krawędź na wykresie ważonym może mieć wartość 0.

właściwie to ma sens, że 0 może być użyte jako waga krawędzi, ale pracowałem z wykresami w ciągu ostatnich kilku dni i nigdy nie widziałem takiego przykładu.

wprowadź opis zdjęcia tutaj

Taxellool
źródło
28
Jeśli ujemne wartości są „dozwolone”, to dlaczego nie zero? :)
Derek 朕 會 功夫
5
Przykładowo, jeśli dodatnie ciężary reprezentują zużycie paliwa netto podczas podróży z jednego węzła do drugiego, to ujemne ciężary mogą reprezentować tankowanie netto. Zerowa krawędź to miejsce, w którym zużyte paliwo jest dokładnie kompensowane przez tankowanie.
JW
1
@DavidRicherby Uważam, że prawdziwym pytaniem jest na przykład: „czy algorytm X jest poprawny w obecności krawędzi zerowych wagi”. W przeciwnym razie, jaki jest kontekst? Odpowiedź może brzmieć „tak” lub „nie”, w zależności od szczegółów. Pytanie takie jak „czy tablica może zawierać zera” jest równie znaczące.
Juho
1
@Juho: Oh, wszystko w porządku. To jak pytanie, czy liczba może być ujemna. Wydaje ci się oczywiste, że zależy to od kontekstu, ale na pewno nie było to oczywiste dla ludzi, dopóki nie pojawiły się liczby ujemne. Nawet zero nie było oczywiste.
Mehrdad
1
W zależności od tego, co chcesz zrobić, twoje wagi mogą nawet nie być liczbami rzeczywistymi. Na przykład, jeśli wykres przedstawia obwód prądu przemiennego, twoje wagi mogą być fazorami, a są to liczby zespolone.
user2357112,

Odpowiedzi:

165

Pozwolony przez kogo ? Nie ma centralnej administracji grafów, która decydowałaby o tym, co możesz, a czego nie możesz zrobić. Możesz definiować obiekty w dowolny dogodny dla ciebie sposób, o ile masz jasność co do definicji. Jeśli krawędzie zerowane są dla Ciebie przydatne, użyj ich; tylko upewnij się, że czytelnicy wiedzą, że właśnie to robisz.

Powodem, dla którego zwykle nie widzisz krawędzi zerowej jest to, że w większości kontekstów krawędź z zerową wagą jest dokładnie równoważna braku krawędzi. Na przykład, jeśli wykres przedstawia kraje i ilość transakcji między nimi, zerowa waga oznaczałaby brak handlu, co jest tym samym, co brak krawędzi. Jeśli wykres przedstawia odległości, krawędź o zerowej wadze odpowiadałaby dwóm punktom w odległości zero od siebie, co oznaczałoby, że faktycznie byłyby to samo miejsce, więc oba powinny być reprezentowane przez ten sam wierzchołek. Jednak w innych kontekstach krawędzie zerowej wagi mogą mieć sens. Na przykład, jeśli wykres przedstawia sieć dróg, a masy krawędzi reprezentują natężenie ruchu, istnieje duża różnica między drogą, z której nikt nie korzysta (krawędź zerowa), a w ogóle bez drogi (bez krawędzi).

David Richerby
źródło
1
Warto zauważyć, że wiele algorytmów graficznych wyraźnie określa, czy działają na wykresach z ujemnymi wagami, czy nie. Myślę, że to wyjaśnia, że ​​nawet ujemne wagi są dozwolone, w zależności od kontekstu.
Mooing Duck
6
@MooingDuck Myślę, że sedno pytania polega na tym, że chociaż algorytmy rzeczywiście często mówią, czy działają dla wag ujemnych, rzadko wymieniane są wagi zerowe. Wagi ujemne są znacznie mniej niezwykłe niż zero, więc w tym konkretnym kontekście nie jestem pewien, czy trzeba je wymienić.
David Richerby
13

To zależy od kontekstu. Zasadniczo tak, dozwolone mogą być krawędzie zerowe, a nawet ujemne. W niektórych szczególnych przypadkach może być wymagane, aby wagi krawędzi były nieujemne lub ściśle dodatnie (na przykład algorytm Dijkstry wymaga, aby wagi były nieujemne).

Tom van der Zanden
źródło
Czy istnieje określony typ wykresu, który zabrania zerowania? i pozwala na wartości ujemne lub dodatnie?
Taxellool
9
„Niezerowy wykres ważony krawędzi”.
Tom van der Zanden
10
@Taxellool Obiekty matematyczne nie są osadzone w kamieniu. Nie ma ustalonej listy obiektów matematycznych o ustalonych nazwach, które są jedynymi, których możesz używać.
David Richerby,
Zależy od używanego algorytmu. Bellman-Ford przyjmuje zera, podczas gdy w Dijkstrze są one usuwane
Manuel Azar,
5

Jak zauważają inne odpowiedzi, masz całkowitą swobodę rozważania (lub wykluczania z rozważań) wykresów ważonych z zerowymi krawędziami.

Z mojego doświadczenia wynika , że zwykle w większości zastosowań grafów ważonych nie wprowadza się rozróżnienia między krawędzią zerową a brakiem krawędzi. Jednym z powodów tego jest to, że zazwyczaj wykresy ważone pojawiają się jako uogólnienia multigrafów , które z kolei są uogólnieniami prostych wykresów.

W szczególności multigraf jest wykresem, który (w przeciwieństwie do prostego wykresu ) pozwala na wiele krawędzi między tą samą parą węzłów. Podczas gdy na prostym wykresie dowolna para węzłów jest zawsze połączona przez 0 lub 1 krawędzie, para węzłów w multigrafii może być połączona przez 0, 1, 2, 3 lub więcej (ale zawsze nieujemną liczbę całkowitą ) krawędzie.

Uogólnienie multigrafu, aby umożliwić ułamkową liczbę krawędzi między parą węzłów, naturalnie prowadzi następnie do rozważenia ważonych wykresów, a wiele algorytmów, które działają na dowolnych multigrafach, można również zmusić do pracy na takich ważonych wykresach. Ale w przypadku takich algorytmów „waga” krawędzi naprawdę oznacza jej różnorodność . Zatem, biorąc pod uwagę tę interpretację, nie może być znaczącego rozróżnienia między „bez krawędzi” i „0 krawędzi” między parą węzłów: oba oznaczają dokładnie to samo.

Oczywiście „wykres ważony” z definicji jest w rzeczywistości tylko wykresem z liczbą związaną z każdą krawędzią i jest całkowicie możliwe interpretowanie wagi jako czegoś innego niż wielokrotność, w którym to przypadku rozróżnienie między brakiem krawędzi a zerową wagą przewaga może rzeczywiście mieć znaczenie. Jednak próba zastosowania standardowych algorytmów multigraficznych do takich „dziwnie ważonych wykresów” raczej nie przyniesie rezultatów, które byłyby sensowne z punktu widzenia alternatywnej (niepoliczalności) interpretacji wag krawędzi.

Ilmari Karonen
źródło
6
To, w jaki sposób wykresy ważone pokazują się „zwykle”, zależy bardzo od dziedziny. Kiedy modeluję sieć dróg jako wykres, aby znaleźć najkrótsze ścieżki, masy przedstawiają odległości, nie zaczynam od wielu dróg między skrzyżowaniami, a następnie nie wprowadzam dróg ułamkowych.
adrianN
3
@adrianN Chociaż na takim wykresie brak krawędzi odpowiada nieskończonej związanej z nią wartości, a nie zeru.
CodesInChaos
0

Pomyśl o wykresie układu drogowego w Cambridge w Wielkiej Brytanii, notatki są wspólne dla rowerzystów i kierowców samochodów, podobnie jak większość krawędzi. Takie postępowanie znacznie zmniejsza koszty utrzymania danych.

Jeśli teraz zdefiniujemy ciężar krawędzi jako czas podróży w sekundach, czysto każda krawędź będzie miała dwa obciążniki, jeden dla samochodów innych dla rowerów. Niektóre ciężary będą nieskończone, ponieważ samochody nie są dozwolone na trasach rowerowych.

Teraz rozważ dwa skrzyżowania drogowe, które są bardzo blisko siebie, tak blisko, że są ząbkowane tylko przez kilka słupków, które zatrzymują kierowców samochodów. (Na przykład skrzyżowanie, na którym samochody mogą skręcać tylko w lewo, ale rowerzyści mogą jechać w dowolnym kierunku.) Dostajemy wtedy pewne krawędzie z nieskończoną wagą od kierowców samochodów i zerową wagą dla rowerzystów.

(Oczywiście wykres może być następnie wstępnie przetworzony w celu stworzenia prostszego wykresu dla tras rowerzystów, przed opracowaniem najlepszych tras).

Ian Ringrose
źródło
Nie rozumiem, jak to rozwiązuje pytanie. Pytanie dotyczy krawędzi o zerowej wadze. W twoim przykładzie (który, nawiasem mówiąc, może nie mieć większego sensu dla osób nieznajomych Cambridge), każda krawędź ma już dwa ciężary. Teraz, o ile możesz zdefiniować wykresy ważone, jak chcesz, to dobrze, ale wydaje się, że nie odpowiada na zadane pytanie. Ponadto wszystkie opisane krawędzie wydają się mieć co najmniej bardzo małą wagę dla rowerzystów: nawet przemieszczanie się na niewielką odległość wymaga niezerowej ilości czasu.
David Richerby
@DavidRicherby, po prostu załóż, że czasy krótsze niż 1 sekunda nie są rejestrowane.
Ian Ringrose
0

Wygląda na to, że używasz ciężaru, aby spróbować przedstawić dwa wyraźnie różne aspekty wykresu. Pierwszy dotyczy tego, czy wykres rzeczywiście ma reprezentowalną (narysowaną) krawędź, a drugi to jego rzeczywista waga.

Jak zauważyłeś, wpadasz w mylącą sytuację, jeśli użyłeś „niezerowej” jako wskaźnika, że ​​krawędź jest obecna (i trzeba ją narysować lub umieścić na liście), a jednocześnie znalazła sytuację gdzie zerowa waga jest klasyfikowana jako ważna.

Zasadniczo będziesz potrzebować innego sposobu reprezentowania obecności krawędzi (zakładając, że tak naprawdę potrzebujesz, i nie możesz po prostu stworzyć tablicy wag N ^ 2, ale wtedy wpadniesz w pułapkę, że musisz zdecydować, co zrobić z pętlą tylne krawędzie ...)

Philip Oakley
źródło
Nie jestem pewien, czy to naprawdę odpowiada na pytanie. Pytanie dotyczy tego, czy wykresy mogą mieć krawędzie zerowej wagi; twoja odpowiedź dotyczy głównie tego, jak można zaimplementować strukturę danych dla wykresów z zerowymi krawędziami.
David Richerby
@DavidRicherby, Zamknij; To (moja odpowiedź) było bardziej o tym, dlaczego i jak powstało pytanie (lub mogło powstać) - problem XYProplem. Często umiejętność racjonalizacji tego, dlaczego był to problem, może przede wszystkim pomóc w zrozumieniu, w jaki sposób rozwiązanie jest właściwą odpowiedzią, a nie tylko „krówką”
Philip Oakley,