StartAlgorytmyAlgorytmy grafoweCiąg graficzny(2)
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Ciąg graficzny(2)
Ocena użytkowników:+++-- / 10
SłabyŚwietny 
Wpisany przez Tomasz Lubiński
wtorek, 09 sierpnia 2005 19:42
Jeżeli należy wygenrować graf o zadanym ciągu stopni wierzchołków najpierw należy sprawdzić czy taki graf istnieje, czyli czy ciąg stopni jest graficzny. Można więc powiedzieć, ze dany ciąg liczb c=c1, c2, ..., cn jest graficzny jezeli istnieje graf o n wierzchołkach, dla którego c jest ciągiem stopni wierzchołków. Na przykład nie da się wygenerować grafu o 4 wierzchołkach i ciągu stopni 2,2,2,1.

Algorytm testowania czy ciąg jest graficzny przebiega następująco:
  • Posortuj ciąg c nierosnąco
  • Jeżeli wszystkie wyrazy ciagu są równe zeru to ciąg jest graficzny (czyli po posortowaniu c1 jest równe 0)
  • Jeżeli w ciągu c począwszy od drugiego elementu jest co najmniej c1 elementów o wartościach dodatnich, to odejmij 1 od c1 elementów ciągu począwszy od c2, podstaw 0 do c1 i wróc do kroku 1. Jeżeli w ciągu nie ma wystarczającej liczby elementów dodatnich to znaczy, że ciąg c nie jest graficzny
Przykład 1
n=5, c=2,3,2,3,2
posorutj ciąg: c=3,3,2,2,2
odejmij 1 od od c1 elementów ciągu począwszy od c2 podstaw 0 do c1 c=0,2,1,1,2
posorutj ciąg: c=2,2,1,1,0
odejmij 1 od od c1 elementów ciągu począwszy od c2 podstaw 0 do c1 c=0,1,0,1,0
posorutj ciąg: c=1,1,0,0,0
odejmij 1 od od c1 elementów ciągu począwszy od c2 podstaw 0 do c1 c=0,0,0,0,0
w ciągu zostały same zera a więc ciąg c=2,3,2,3,2
jest graficzny.

Przykład 2
n=5, c=1,4,2,3,1
posorutj ciąg: c=4,3,2,1,1
odejmij 1 od od c1 elementów ciągu począwszy od c2 podstaw 0 do c1 c=0,2,1,0,0
posorutj ciąg: c=2,1,0,0,0
w ciągu c począwszy od drugiego elementu nie ma c1 elementów o wartościach dodatnich a więc ciąg ten nie jest graficzny

Algorytm ten po pewnych modyfikacjach można wykorzystać do zdbudowania grafu o zadanym ciągu wierzchołków. Należy wierzchołek o maksymalnym stopniu w danej iteracji łączyć z wierzchołkami, w których zmniejszamy stopień o jeden. Ciag c musi w tym wypadku być ciągiem rekordów wartości i numeru wierzchołka, bo podczas losowania zmienia się kolejność ustawienia wierzchołków.



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński C/C++
Implementacja w C/C++
Implementacja w C/C++
+---- / 1
Tomasz Lubiński Delphi/Pascal
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
+---- / 1
Tomasz Lubiński Java
Implementacja w Java
Implementacja w Java
+---- / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: czwartek, 27 maja 2010 18:52

Dodaj komentarz

Kod antysapmowy
Odśwież