Ugrás a tartalomhoz

independent set problem

A Wikiszótárból, a nyitott szótárból


Főnév

independent set problem (tsz. independent set problems)

  1. (informatika) Egy gráfban egy független csúcshalmaz (angolul: independent set) olyan csúcshalmaz, amelyben egyik csúcspár sincs éllel összekötve.

Formálisan:

Legyen egy gráf.

A halmaz független csúcshalmaz, ha:



A probléma megfogalmazása

Döntési változat:

Input: Egy gráf , és egy szám . Kérdés: Van-e legalább elemű független csúcshalmaz -ben?

Ez a k-Független Halmaz Probléma, és NP-teljes.



📊 Példa

Gráf:

A --- B
|     |
C     D
  • Csúcsok: A, B, C, D
  • Élek: (A,B), (A,C), (B,D)

Független csúcshalmaz példák:

  • {C, D}
  • {B, C}
  • {A} Mert ezekben nincs olyan pár, amit él összeköt.



📌 Kapcsolódó fogalmak

Fogalom Leírás
Független halmaz Olyan csúcshalmaz, ahol nincs él a tagok között
Klikk (clique) Olyan csúcshalmaz, ahol minden csúcspár össze van kötve
Komplementer gráf Egy gráf, ahol él ott van, ahol az eredetiben nincs
Maximum független halmaz A legnagyobb elemszámú független halmaz a gráfban

Megjegyzés: Egy maximum független halmaz keresése egy NP-nehéz optimalizálási probléma.


🧮 Bonyolultság

  • A független csúcshalmaz probléma NP-teljes.
  • A maximális független halmaz megtalálása NP-nehéz.
  • Akkor is nehéz, ha a gráf síkbarajzolható (planáris), vagy szabályos (regular).



🧠 Kapcsolat más problémákkal

Probléma Kapcsolat
Klikk probléma Egy gráfban a klikk a komplementer gráf független halmaza
Vertex cover Egy csúcsfedés és egy független halmaz kiegészíti egymást:
V |
Színezési probléma Színezési osztályok független halmazok



🧠 Algoritmusok

1. Brute force (minden csúcshalmaz kipróbálása)

  • Időbonyolultság:

2. Backtracking / Branch and Bound

  • Hatékonyabb, de még mindig exponenciális

3. Greedy heurisztika

  • Nem garantál optimális megoldást
  • Pl. válasszuk a legalacsonyabb fokszámú csúcsot

4. FPT algoritmusok (paraméterezett)

  • Használhatók, ha a keresett halmaz mérete kicsi



⚙️ C++ vázlat – Független halmaz keresése

bool isIndependent(const vector<vector<int>>& adj, const vector<int>& subset) {
    for (int i = 0; i < subset.size(); ++i)
        for (int j = i + 1; j < subset.size(); ++j)
            if (adj[subset[i]][subset[j]])
                return false;
    return true;
}

bool hasIndependentSetOfSizeK(const vector<vector<int>>& adj, int k) {
    int n = adj.size();
    vector<int> nodes(n);
    iota(nodes.begin(), nodes.end(), 0);
    
    for (int mask = 0; mask < (1 << n); ++mask) {
        vector<int> subset;
        for (int i = 0; i < n; ++i)
            if (mask & (1 << i))
                subset.push_back(i);
        if (subset.size() == k && isIndependent(adj, subset))
            return true;
    }
    return false;
}

🧪 Alkalmazások

  • Vezetéknélküli hálózatok – zavarásmentes pontok kijelölése
  • Közösségi hálózatok – olyan emberek kiválasztása, akik nem ismerik egymást
  • Ütemezés – ütközésmentes tevékenységek kiválasztása
  • Erőforrás-hozzárendelés – konfliktusmentes folyamatok



🧾 Összefoglalás

Fogalom Leírás
Független halmaz Csúcshalmaz, ahol nincs él a csúcsok között
Döntési probléma Van-e legalább elemű független halmaz?
Optimalizálási probléma Legnagyobb elemszámú független halmaz keresése
Bonyolultság NP-teljes, NP-nehéz
Kapcsolatok Klikk, vertex cover, gráfszínezés