::Maximum Independent Set
Аль ч хоёр орой нь хөрш байх ёсгүй оройн олонлог гэхээр үүнийг independent set гэдэг. Энэ олонлогийн оройн тоог байж болох хамгийн ихээр нь байлгаж чадвал үүнийг maximum independent set гэдэг. Энэ бодлого бол шийдэгдээгүй бодлого NP буюу одоогоор мэдэгдэж байгаа хамгийн сайн алгоритмын үнэлгээ нь non-polynomal ба олон гишүүнт хэлбэрээр тавигдахгүй гэсэн үг. Үүнийг a(v) гэе.
::Minimum Vertex Cover
Графаас хэд хэдэн оройн сонгон оройн олонлог авах ба үүссэн олонлог дахь орой болгон нь анхны том графын ядаж нэг ирмэгт харьяалагдаж байвал үүнийг vertex cover гэдэг. Бүрхэлт гэх юмуудаа. Мөн уг олонлогийн оройн тоог байж болох хамгийн багад хүргэж чадвал үүнийг minimum vertex cover гэж байгаа юм. Үүнийг b(v) гэе.
Ерөнхий тохиолдолд дээрх хоёр бодлого хоюулаа NP бодлого.
::Konig's theorem
Графын нийт оройн тоо V = a(v) + b(v)
::Bipartite граф
Графыг аль ч хоёр хөрш орой нь ялгаатай өнгөөр будагдсан байхаар будахад яг 2 будаг хэрэг болдог графыг bipartite граф гэдэг. Ийм графын хэрэглээ маш өндөр. Ийм граф дээр b(v) тоог олох нь компьютерийн шинжлэх ухаанд маш их хэрэг болж байгаа, учир нь O(EVf*) хугацаанд b(v)-г олох алгоритм байгаа. a(v) = V-b(v) гээд хялбархан олчиж байгаа биз.
::Maximum Matching
Оюутнууд болон оюутны байр байг. Оюутнууд аль аль өрөөнд орох хүсэлтэй байгаа хүсэлт нь өгөгдсөн, нэг өрөөнд нэг л оюутан байх ёстой бол хамгийн ихдээ хичнээн оюутан өрөөнд орж чадах вэ? гэсэн бодлого байг. Үүнийг зүүн талд нь бүх оюутнуудыг графын оройнууд болгоод цувуулаад тавья. Баруун талд нь бүх өрөөнүүдийг тавье.
Дээр үүссэн граф бол bipartite graph. Дээр тавигдсан бодлогын хариу буюу хамгийн их хоёр хосыг байгуулах бодлого нь maximum matching юм. Хамгийн их хос оройн тоо гэх юмуудаа. Үүнийг network flow ашиглаад олчихдог. Flow-н талаар ЭНД дарж уншина уу. Товчхондоо бол графыхаа хоёр талд нь нэмээд хоёр орой тавиад (зүүн талд нь эхлэл s, баруун талд нь төгсгөлын орой t) ирмэг бүрт урсгалын 1 гэсэн утга өгөөд алгоритмаа гүйлгэчинэ.
Миний бичсэн Ford-Fulkersonий энгийн цэвэрхэн код ЭНД дарж харна уу. Өөрөө гол нь сураарай.
Дэд бодлого 5 дээр анализ хийе
Зөвхөн дүрэм 0 болон 1 гэхээр графаа зураад үздээ. Яаж ч байсан сондгой урттай цикл үүсэхгүйг хараад батлах гээд үзээрэй. Үүсэж болох графын оройн зэрэг дээр тулгуурлаад гарчина. Сондгой цикл байхгүй гэхээр үүсэх граф маань bipartite граф болно. Maximum Matching-г олоод нийт оройн тооноос хасахад манай бодлогын хариу гарж ирнэ. Графаа яаж байгуулж байгаа, бас бус зүйлүүдийг яаж шийдсэнийг кодноос харна уу.
source


