SQL Oracle, może VBA

FR
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:1
0

Hej,

Mam zadanie do rozwiazania, ale nie wiem jak je ugryźć.
Nie jestem pewien czy to odpowiednie miejsce aczolwiek nie wiedzialem gdzie sie zwrocic.

Krzysiek i Tomek skomentowali profil_1, można więc stwierdzić pewne powiazanie miedzy nimi.
Krzysiek i Andrzej skomentowali profil_2 i sytuacja jest podobna.
Powiazania te sa bezposrednie. Posrednim powiazaniem mozemy nazwać powiazanie miedzy Tomkiem, a Andrzejem,
poniewaz laczy ich wspolna osoba: Krzysiek. W ten sposob mozemy podzielić te osoby na grupy. Dodatkowo Tomek bedzie powiazany, z każda osoba ktora posrednio lub bezposrednio
jest powiazana z Andrzejem.

Pytanie jest: ile jest takich grup, powiazan.

Tutaj oczywiscie nie wrzucilem calego zadania z danym,i ktorych sa tysiace rekodow tylko tresc.
Prosilbym jedynie o naprowadzenie na rozwiazanie lub pseudokod.
Jeżeli beda dodatkowe pytania albo niejasnosci od razu sprostuje.

Pozdrawiam

99xmarcin
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:2420
0

W języku teorii grafów, masz graf nieskierowany, węzłami są osoby, krawędź występuje pomiędzy X i Y gdy istnieje profil który X i Y skomentowali lub gdy istnieje ścieżka X P1 ... PN Y w grafie.
Ty musisz dokonać dekompozycji grafu na spójne podgrafy.

W SQL brzmi jak standardowe użycie CTE, zaczynasz od pojedynczej osoby i dokładasz do tego zbioru wszystkie osoby które są połączone krawędzią z jakąś osobą z tego zbioru. Każdy taki zbiór możesz tagować np. min id osoby która się w nim znajduje. Liczba krawędzi w grupie to po prostu liczba komentarzy po profilem (o ile się nie mylę - kofeina nie osiągnęła jeszcze wymaganego poziomu).

Tutaj masz coś podobnego (na graf skierowany): https://stackoverflow.com/questions/35254260/how-to-find-all-connected-subgraphs-of-an-undirected-graph


Holy sh*t, with every month serenityos.org gets better & better...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.