• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konwersja macierzy sąsiedztwa na graf w C++

VPS Starter Arubacloud
0 głosów
546 wizyt
pytanie zadane 23 kwietnia 2021 w C i C++ przez Mavimix Dyskutant (8,420 p.)

Cześć, mam za zadanie przekonwertować tablicę sąsiedztwa grafu (nieskierowanego) na graf. Dotychczas udało mi się uzyskać taki kod:

        //Tworzenie opisu drzewa
        // ileWierzcholkow - ile wierzcholkow ma graf?
        // macierzSasiedztwa[m][n] - macierz sasiedztwa podana przez uzytkownika

        std::list<int> listaA;
        std::list<int> listaB;
        //iterowanie po wierzcholkach
        for (j = 1; j <= ileWierzcholkow; j++)
        {
            //nadaj indeks kazdemu wierzcholkowi
            wierzcholek[j].indeks = j;

            //iteruj po wierszach macierzy sasiedztwa
            for (int k = 0; k < ileWierzcholkow; k++)
            {
                //iteruj po kolumnach macierzy sasiedztwa
                for (int l = 0; l < ileWierzcholkow; l++)
                {
                    //czy wierzcholek A jest poloczony z B?
                    if (1 == macierzSasiedztwa[k][l])
                    {
                        //wpisz ktore wierzcholki sa polaczone z wierzcholkiem A
                        listaA.push_back(j);
                    }

                    //czy wierzcholek B jest poloczony z A?
                    if (1 == macierzSasiedztwa[l][k])
                    {
                        //wpisz ktore wierzcholki sa polaczone z wierzcholkiem B
                        listaB.push_back(j);
                    }

                    std::list<int>::iterator itA = listaA.begin();
                    std::list<int>::iterator itB = listaB.begin();

                    //Czy wierzcholki sa poloczone
                    if (*itA = *itB)
                        //zapisz dziecko
                        //koniec pomyslow
                        wierzcholek[j].dziecko[l] = wierzcholek[j + 1].indeks;
                }
            }
        }

Zrobiłem strukturę reprezentującą wierzchołki - struktura zawiera tablicę z numerami indeksów dzieci, numer indeksu oraz numer indeksu ojca. Kod sprawdza które wierzchołki są ze sobą połączone, następnie powinien zapisywać to do wierzcholek.dziecko lub do wierzcholek.ojciec - powinien, bo właśnie tu się zatrzymałem. Macie jakiś pomysł w jaki sposób zapisać do struktury dane o dzieciach i ojcach? Są jakieś inne, prostsze metody aby wykonać "konwersję" macierzy sąsiedztwa do grafu?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 28 grudnia 2021 w Java przez xFanti Obywatel (1,350 p.)
0 głosów
1 odpowiedź 772 wizyt
pytanie zadane 11 czerwca 2018 w SQL, bazy danych przez emeryt68 Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 425 wizyt
pytanie zadane 24 września 2019 w C i C++ przez jjanickij Użytkownik (510 p.)

92,959 zapytań

141,920 odpowiedzi

321,150 komentarzy

62,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...