logo

Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlari

Загружено в:

12.08.2023

Скачано:

0

Размер:

50.10546875 KB
Planar grafikning tashqi yuzi uchun barcha yuzlarni
aniqlash algoritmlari  
Mundarija
KIRISH
1-bob………………………………………………………………………………4
1. 1. Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmlari
tushunchasi ………………………………………………………………………5
2-bob
2.1. Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmlari
tushunchasi ………………………………………………………………………5
2.2. Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmiga   oid
misollar ………………………………………………………………………5
  2.3. Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmlarini
C++ dasturlash tilda ifodalash  ……………………………………………………5
2.4.   Dasturni murakkabligini baholash ……………………………………………5
Xulosa ……………………………………………………………….........………30
Foydanilgan adabiyotlar ………………………………………………....……31
1 Kirish
Planar grafikning tashqi yüzini aniqlash uchun bir necha algoritmlar mavjud.
Planar   grafik,   barcha   qatorlari   qarshilashm asligi   (crossing)   yoki   faqat   bitta
birikmali  (multiple) qator (edge)ning mavjudligini bildiradi. Quyidagi  algoritmlar
planar grafikning tashqi yüzini aniqlashda foydalaniladi: 
1.   Planarlık   testi   (Planarity   Test):   Bu   algoritmlar   grafikning   bir   nechta
qanchalarini   muqobil   qatorlarning   kesishmasini   tekshiradi.   Engelessan   to'plami
(Face of a Graph) usulini ishlatadi. 
2.   PQ daraxti (PQ-tree):   Bu algoritmda, grafikning barcha tashqi yuzlarni topish
uchun "   PQ daraxti " strukturasidan foydalaniladi.
  3.   Gramiy-Di-Battista   algoritmi:   Bu   algoritm   birikmalarning   kirishmasini
aniqlash uchun ishlatiladi. Qatorlar orasidagi pontos uyg'unligini bildiradi. 
4.   Tarjima   algoritmlari   (Embedding   algorithms):   Bu   tarz   algoritmlar   grafikni
planar   bir   koordinat   sistemiga   joylashtirish   uchun   foydalaniladi.   Bu   koordinat
sistemga   ko'chirilgan   grafik   tashqi   yüzini   olish   uchun   bir   bita   tarjima
algoritmasidan foydalanish mumkin. 
Bu   algoritmlardan   har   biri,   grafikning   to'plamlarni,   qatorlarni   va   yuzlarni
aniqlashning   turli   xususiyatlariga   ega   bo'lishi   mumkin.   Tashqi   yuzini   aniqlash
algoritmlari   kompyuter   grafikasi,   kartografiya,   tizimlar   va   boshqa   sohalarda
foydalaniladi.   Planar   grafikalarni  tashqi  yuzini   aniqlash  algoritmlari   ning muallifi
Robert   Endre   Tarjan   hisoblanadi.   U   uning   adiblari,   qo'yilmalar   yuzasining
2 birakilmaslari, qadamlashtirilgan bunyod etish va boshqalar, planar grafikalar bilan
bog'liq   sohalarda   yuqori   darajada   faol   bo'lib,   bu   sohaga   katta   qo'shimcha   hissa
kiritgan. Tarjan aniqlovchiligi muhim matematik vositalardan biri sifatida tanilgan
va planar grafikalar sohasidagi yutuqlarni aniqlashda muvaffaqiyatli qo'llanilgan.
1-bob
1.1.SPlanar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash
algoritmlari tushunchasi
Planar   grafik,   ikki   boylik   grafiklardan   iborat   bo'lgan   grafik   turlari   jismini
tushuntiradi.   Bu   turlar   x   va   y   o'qlari   orqali   boshqa   boshqa   nuqtalarni   bog'lash
orqali ko'rsatiladi. Planar grafiklarda nuqta, chiziq, ko'ordinata akseksiya, maydon
va   boshqa   elementlar   bilan   ishlovchi   metod   va   tushunchalar   qo'llaniladi.   Planar
grafiklarni tashqi yuzlari esa, planar grafiklarning plotterlar, monitorlar, printerlar
yoki   boshqa   chizish   vositalariga   aylantirilgan   formatlardagi   ko'rinishlari
hisoblanadi.   Bu   tashqi   yuzlar   arqali   ma'lumotlar   o'qilishi,   ko'rishishi   va   ulardan
foydalanishga   imkon   beradi.   Bu   faqat   nazariy   ta'riflar   hisoblanadi.   Planar
grafikning   yuzlari,   bir   otvetarafoq,   quti   yoki   boshqa   geometrik   asoslar   ustida
joylashtirilgan   geometrik   shakllardir.   Ular,   bir-birini   kesmagan   yoki   bir-biriga
tegishli   bo'lgan   chiziqlarni   umumiy   holatda   butunlay   o'zgartirishsiz   chizish
imkoniyatiga ega bo'lgan uch xarakteristikadan iboratdir: 
1. Yuzlar qatlamlari: Har bir yuz qatlami bir-qatlamga tegishli girih bo'lib, bitta
yuzning bir-tomonli hajmi va tartiblanishi bilan ta'minlanadi.
2.   Qatlamlar tarmog'i: Yuzlar qatlamlari butunlay urtasiga tez-tez taklif
etilgan bo'lib, bir-birini kesmagan aylana bo'lib chiziladi.
3.   Tashkil  etish shartlari: Planar grafikning har bir  yuzi, asosiy  grafik tashkil
etish prinsiplari va qoidalari asosida joylashtiriladi
3 Ushbu   tushunchalar,   planar   grafikda   yuzlar   haqida   ma'lumot   berishda   yordam
berishi mumkin bo'lgan yordamchi bir tavsifdir
Planar grafik, bir xaritada qo'yg'anga qo'yilgan xech turdagi grafiklardir, masalan,
uchburchaklar,   to'g'ri   to'rtburchaklar   va   boshqalar.   Grafikda   barcha   yo'l,   yuz   va
boshqa   birlashmalarning   uchburchaklarga   qo'yilgan   gradientlari   to'g'ri   kesishishi
mumkin emas. Yuzlar tasviri, bir sovrin suyuq trafik holatida quvurla mo'ljalangan
bir   material   yuzi   orqali   tasvirlanadi.   Grafikda   har   bir   yuz,   yuzlarning   mosligi   va
ularning   ko'rsatish   tartiblari   bilan   ifodalangan   eng   to'g'ri   loyihalardan   birini
ifodalaydi. Yuzlar orqali oynashgan maqolalarga yoki obyektlarga murojaat qilish
mumkin.   Planar   grafikning   yuzlar   orasidagi   aloqalariga   "yuzboshqaruv"   deyiladi.
Yuzboshqaruv,   har   bir   yuzning   qaysi   boshqa   yuz   bilan   biriktirilganligini
ifodalaydi. Ikkita yuz bir-biriga toqqa tiyilgan bo'lsa, ulardagi aloqa "kattalashish"
deb   ataladi.   Boshqa   so'zlar   bilan   aytganda,   yuzlar   orasidagi   aloqa   oldindan
belgilanganlik,   bemalol   topiladigan   yuzlarning   yo'naltirilishi   orqali   aniq   bo'ladi.
Bunday   belgilar   asosida   planar   grafikning   umumiy   muhit   soni   va   yuzlarning
umumiy   soni   topilishi   mumkin.Planar   grafik,   qatorlar   va   burchaklar   bilan
ifodalangan   grafikdir,   lekin   boshqa   elementlar   (masalan,   yuzlar)   bir   biriga
tegishlilikka   ega   emas.   Planar   grafikda   har   bir   burchak   faqat   bir   nechta   qatorlar
bilan   bog'langanligi   uchun   u   planar   deb   ataladi.   Yuzlar,   bir   grafikdagi   qatorlar
to'plamining   ifodalangan   qismidir.   Bu   yuzlar,   qatlarni   ajratish   orqali   hosildor
bo'lib,   yozuvchi   uchun   aloqador   ma lumotlar   berganlikda   foydalaniladi.   Amalda,ʼ
planar grafikda  yuzlar va qatorlar orasidagi aloqalar, yuzlar qatlarni tegishlantirish
orqali   ifodalangan.   Bu   aloqalar   planar   grafiklarni   aylanib-yugurishsiz
ifodalaydi.Planar   grafik,   grafikning   bir   joyida   yoza,   bunday   qatorlar   o'zaro
kesishmaydigan bir ko'rgazmani tashkil etadi. Ya'ni, bu grafikdagi har bir qatorda
faqat   bir   ta'velzor   (yoki   bombozlik)   bo'ladi.   Yuzlar,   planar   grafikning   qatorlar
orqali   ajratilgan   tekisliklaridir.   Yuzlar   bir-biriga   tegmasdan   va   bo'shliksizdirlar.
4 Umul   qiling,   planar   grafikning   yuzlar   va   qatorlar   ko'ptir.   Yuzlar   o'rnatish,
operatsiyalar   va   graflar   teoriyasi   sohasidagi   muxim   mavzulardan   biridir.   lanar
grafik,   boshqa   bir   deganicha,   qoidalariga   javob   beruvchi   grafikdir,   ya'ni   bir   xil
ko'plikni kesishuvchan holda aks ettirmaydi 
2.2.Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmiga
oid misollar
Planar   grafiklar,   bir   cho'miladagi   harakat   bilan   yuqoriga   chiqmaydigan   bir
yuzsizlikda   chizilgan   grafiklardir.   Bu   misollar,   planar   grafiklarni   ko'rsatadi.
1.   Chapdagi   misolda,   uchta   doira   berilgan.   Ular   haqiqiyayam   da   doira   yuqoriga
chiqmaydi. Shuningdek, ular qo'llar ichida ham kesib yuruvchilar yo'q.
     A---B
     |     <!-- Doiralar -->
     |     <!-- kesib yuruvchilar -->
     C---D
2.   Keyingi   misolda,   uchta   to'rtburchak   berilgan.   Bir   biriga   uzluksiz   chechaklar
bilan   kesib   yurilgan.   Bu   kesib   yurikalarning   har   biri   to'rtburchakni   ikkita
qirralariga bog'langan.
 
     ----
     |           |
5      |           |
      ----
3.   Uchinchi   misolda,   x   bir   xonali   harfli   grafik   berilgan.   Bu   planar   grafikni
ko'rsatmaydi, chunki to'rtburchaklar bir-biri ortida yoki kesishuvda joylashgan.
        x
       / \
     /     \
    /       \
   x---------x
Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmlari
haqida misollar yechish mumkin. Misol uchun, bir algoritma "yuzlarin soni" (Face
Count)   deb   nomlanadi.   Bunda,   grafikda   necha   yuz   borligini   aniqlash   uchun
adjensiya   matritsani   (adjacency   matrix)   qo llaymiz.   Shu   bilan   birga,   grafikʻ
tugundirilgi uchun yuz bashoratini (Face Orientation) aniqlash algoritmasi mavjud.
Bu   algoritmada,   yuzlar   tartibida   namoyish   etish,   yani   xususiyatlarni   belgilashda
foydalaniladi.   Diagramma   diagrammasi   va   Deyvis-Bayn-Harareyning   algoritmasi
(David-Bun-Hare   Algorithm)   shu   mavzuga   misollar   bo ladi.   Shuningdek,	
ʻ
"Tutashganday   Yuzlar"   (Planarity   Testing)   hisoblanishi   muhim   bo lgan   bir-misol	
ʻ
aniqlash   metodini   anglatadi.   Bu   usul   yordamida,   planar   grafikning   yuzlari   uchun
2Ğ bo ysunuvchan  ajralib turib, 2G  hech  qanday  qavatlarni   o tkazmaydi.  Buning	
ʻ ʻ
uchun,   Faryuvinin   algoritmasi   (Faryuin's   Algorithm)   va   Robertsons   va
Seymourning   Teoremasi   kabi   usullar   yordamida   ishlatiladi.   Bundan   tashqari,
grafikning tashqi yuzi uchun boshqa bir nechta algoritmlar va teorematlar mavjud,
6 chunki bu soha ustida ko p ishlar olib borilmoqda. Shu sababli, mahalliy va globalʻ
misollar bilan bu mavzuni mustahkamlash kerak.
Shu   bilan   birga,   bu   misollar   planar   grafiklarni   namoyish   etadi.   Planar   grafiklar
tasavvur   qilish   va   aniqlash   uchun   yordamchi   bo'ladi.   Planar   grafiklar,   ularning
do'konning   bir   layini   boshqa   layinlar   bilan   kesishishi   yo'q   bo'lgan   grafiklar
hisoblanadi.   Planar   grafikning   ko'rsatuvchi   misollari   mavjud   bo'lishi   mumkin.
Bundan biri, "Kuratowski  teoremasi"  bilan bog'liq. Ushbu teorema, asos  maqsadi
bir   grafikni   (planar   yoki   emas)   belgilaydigan   ikki   g'ildirakli   grafiklar   to'plami
bo'lmish   bo'lishini   aniqlashdir.   Boshqa   bir   misol,   "5   ta   uchburchakning   platoni"
deb   nomlanadi.   Ushbu   misolning   maqsadi,   beşta   to'g'ri   burchakning   konveks
liniyalarida   bir   martta   faqat   bir   nuqta   kesishishini   ko'rsatishdir.   Bunday   krauler
grafiklari planar bo'ladi.Bu misollar planar grafiklarni ko'rsatish uchun faqat ikkala
misol.   Real   hayotda   planar   grafiklar   ko'p   qatlamli   jarayonlarda,   moliyaviy
tizimlarda,   transport   tarmoqlarida   va   boshqa   sohalarda   yaratilishi   bilan   bog'liq
masalalarda tahlil qilish uchun keng qo'llaniladi.
Planar grafikning tashqi yüzini topish algoritmi, birida berilgan grafikning yuzasini
belgilovchi aloqadorlik matritsasini ishlatarak topiladi. Ushbu algoritmning asosiy
qadamalaridan   biri,   grafikdagi   turli   bo'lgan   barcha   uchliq   yuzalarini   aniqlash   va
ulardan   bitta   yuzani   tanlashdir.   Keyingi   qadam   esa,   tanlangan   yuzning   barcha
burchaklarini   aloqadorlik   matritsasida   ozaro   bog'lash   va   bunday   tashqi   qatlamlar
sonini   aniqlashdir.   Bunda,   yuzalar   tashqi   qatlamlarning   soniga   teng   bo'lgan
uchliqning   yuzi   bo'lib,   bu   esa   grafikning   tashqi   yüzlarini   topishga   imkoniyat
beradi.   Bu   algoritmdagi   boshqa   muhim   qadamlar,   yuzalarning   orttashiligi,   ikkita
yuz   o'rtasidagi   uchliqning   o'zaro   aloqasi,   qatlamlarning   kattaligi/kichikligi,   ikkita
yuzda uchliqlarning to'rtburchaklariga ega bo'lishi va hokazo bo'lishi mumkin. Bu
qadamlar yordamida grafikning tashqi yüzini topish algoritmi natijasini beradi. 
7 Planar   grafikning   tashqi   yüzini   topish   uchun   boshqacha   boshqaruvlar   mavjud,
lekin quyidagi algoritm bir necha qadamni o'z ichiga oladi:
  1.   Grafikning   butun   tugunlari   bo'yicha   yoki   boshqa   bir   tartibda   barcha
burchaklarni bo'lib oling.
  2.  Har bir ikki burchak orasida bir to'g'ri chiziq chizish bilan quyidagi tekshiruvni
bajarish:   agar   o'sha   chiziq   boshqa   bir   chiziq   yoki   to'g'ri   nuqta   bilan   kesishmasa,
o'sha burchaklar qirralmasligini tasdiqlang. 
3.   Har   bir   burchakdan   chiziq   chizishni   davom   ettirib,   hamma   burchaklarni
tekshiring. 
4.   Barcha burchaklar  qirralmasligini  tasdiqlagan bo'lsangiz, grafikni tashqi  yüzini
topib   bo'lishingiz   mumkinligini   tasdiqlash   uchun   hammasini
tekshiring . Algoritmlardan eng mashhur olanlari:
  1 .  Planarite algorithm : Euler yo'lini ishlatadi va boshqa algoritmlarga qaraganda
so'ngi   natijani   beradi.   Ayniqsa,   grafikning   bo'yoqlar   sonini   hisoblashda   foydali
bo'ladi. 
2 .   Boyutli   algoritmlar :   Boyutli   algoritmlar,   grafikdagi   elementlarning
ko'rsatkichlarini (x, y) koordinatalari orqali berilib, bir-biriga uzluksiz joylashtirish
principi asosida tashkil etilgan matritsadan foydalanadi.
  3.   Wirtinger   algorithm :   Ushbu   algoritm   grafikning   tashqi   yuzini   topish   uchun
kirish   ma'lumotlarini   o'z   ichiga   olgan   holda   yuzaga   kelgan   g'aznacha   yo'naltirish
bilan ishlaydi.
8   Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash   algoritmi   quyidagi
ko'rsatuvchi misol orqali tushuntirish mumkin:
1.   Grafikning   tashqi   yuzlarini   aniqlashning   asosiy   qadamlarini   bajarish   uchun
grafikning   to'g'ri   ro'yhatini   olishimiz   kerak.   Ro'yhatdagi   har   bir   nuqta   to'g'ri
qatlamlar bo'lib, ulardan bir nusxa ham uzluksiz bo'lmasin.
Misol uchun, quyidagi to'g'ri qatlamdan iborat grafikni olamiz:
A = (1, 1)
B = (2, 3)
C = (4, 2)
D = (3, 1)
E = (5, 2)
F = (4, 4)
2. Grafikning barcha uchburchaklarni aniqlash uchun grafikdagi to'g'ri qatlamlarni
joylashtirgan uchburchaklarni yaratamiz.
ABD:
A = (1, 1)
B = (2, 3)
D = (3, 1)
ACD:
9 A = (1, 1)
C = (4, 2)
D = (3, 1)
AEC:
A = (1, 1)
E = (5, 2)
C = (4, 2)
CEF:
C = (4, 2)
E = (5, 2)
F = (4, 4)
3.   Uchburchaklarning   barcha   to'g'ri   qatlamlarining   o'rta   nuqtalarini   hisoblaymiz.
Uchburchaklarning   o'rta   nuqtalarining   hammasini   olish   uchun   x-va   y
koordinatalarini yig'indisiga, keyingi ikki to'g'ri qatlama nuqtasining o'rta nuqtasini
topamiz.
 
ABD uchun o'rta nuqta:
x = (1 + 2 + 3) / 3 = 2
10 y = (1 + 3 + 1) / 3 = 1.67
ACD uchun o'rta nuqta:
x = (1 + 4 + 3) / 3 = 2.67
y = (1 + 2 + 1) / 3 = 1.33
AEC uchun o'rta nuqta:
x = (1 + 5 + 4) / 3 = 3.33
y = (1 + 2 + 2) / 3 = 1.67
CEF uchun o'rta nuqta:
x = (4 + 5 + 4) / 3 = 4.33
y = (2 + 2 + 4) / 3 = 2.67
4. O'rta nuqtalarni taqqoslash va ulardan foydalanib, tashqi yuzlarni aniqlash uchun
formulalardan   birini   qo'llash   mumkin.   Shunga   misol   uchun,   barcha
uchburchaklarning   o'rta   nuqtalarini   taqqoslash   bo'yicha   yuzlarni   aniqlash
algoritmini qo'llaymiz:
Yuza(ABD) = 1/2 * |(2*(3-1.33) + 3*(1.67-1) + 1*(1-3.33))| = 1.67
Yuza(ACD) = 1/2 * |(2.67*(1-1.33) + 3*(1.33-1) + 1*(1.33-2.67))| = 1.1675
11 Yuza(AEC) = 1/2 * |(3.33*(1.67-1.67) + 5*(1.67-1) + 4*(1-1.67))| = 1.67
Yuza(CEF) = 1/2 * |(4.33*(2.67-2.67) + 5*(2.67-2) + 4*(2-2.67))| = 1.335Shunda,
grafikning tashqi yuzi quyidagi uchburchaklar yuzasining yig'indisiga teng bo'ladi: 
Yuza(G)   =   Yuza(ABD)   +   Yuza(ACD)   +   Yuza(AEC)   +   Yuza(CEF)   =   1.67   +
1.1675 + 1.67 + 1.335 = 5.8425
Shunday qilib, berilgan misol uchun grafikning tashqi yuzi 5.8425 ga teng bo'ladi.
Planar   grafikning   tashqi   yuzini   aniqlash   uchun   birma-bir   ko'rsatuvchi   misollar
yordamida quyidagi algoritmni can'sar bilan tushuntirish mumkin: 
1.   Grafikni   representatsiya   qilish:   Grafikni   birma-bir   ko'rsatuvchi   misollar
yordamida saqlash uchun kerakli ma'lumotni olish va representatsiya qilish kerak.
Misol uchun, grafikni haqiqiy ko'ordinatalar yordamida ifodalash mumkin. 
2.   Har bir  uchun yuzlar  ko'rsatuvchi  misol:  Barcha yuzlarni  tekshirish uchun, har
bir   uchun   yuzni   topish   uchun   algoritmdan   foydalanish   kerak.   Bunday   algoritm
misol uchun Planar grafik muvaffaqiyatli ishlaydi.
  3.  Yuzlarining achishlarni hisoblash: Topilgan yuzlarni aniqlangan algoritm orqali
bilan   tekshirish   uchun,   yuzning   barcha   uchlarini   hisoblash   kerak.   Bunda,   har   bir
uchning   butun   uchlarini   uzatgan   chiziq   bilan   uzluksini   hisoblash   kerak,   agar   bu
uzunlik   teskari   bo'lsa,   grafikning   tashqi   yuzini   aniqlashda   muammo   mavjud
bo'ladi.
  4.   Tashqi   yuzni   aniqlash:   Har   bir   yuzni   tekshirishdan   keyin,   biriktirilgan
ma'lumotlarni   qarashda,   tashqi   yuzni   aniqlash   mumkin.   ashqi   yuz,   agar   barcha
yuzlarining uchlarining uzunliklarida teskariligi bo'lmasa, aniqlik bilan aniqlanadi. 
12 Ushbu   algoritm   dasturlash   tillarida   ijro   etish   uchun   ko'plab   kutubxonalardan
foydalanishga imkon beradi. Bu qo'shimcha tafsilotlar mavjud bo'lsa, Planar grafik
algoritmlari bilan bog'liq literaturni o'rganish tavsiya etiladi.
Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmi
quyidagicha ishlaydi:  
1.   Grafikning   barcha   burchaklarini   belgilang.   Burchaklar   uchun   koordinatalarni
foydalanishingiz mumkin.
  2.   Har   bir   burchagacha   yo'l   chizib   bering.   Bu   yo'llarni   tuplab   chiqarish   uchun
to'g'ri va to'nli methodni ishlatishingiz mumkin. Yo'lni o'tishayotgan har qadamda,
grafikning boshqa burchaklari bilan qo'shimcha biriktirish ham talab qilinadi. 
3.  Burchaklardan birini tanlang (masalan, A), va undan boshlab grafikni geografik
ravishda   aylantiring.   Aylantirish   paytida,   yo'llar   ustidan   o'tishni   oldini   olishingiz
kerak. Bu yoki  so'nggi  burchaklardan biri, quyidagi davlatni o'rab turib yuborishi
haqidagi ko'rsatkichlar bilan aylantiladi. 
4.  Barcha burchaklardan biri aylanish natijasida o'rab turilgan paytda, uni yuzlarga
kiritish   haqida   bildirishish   zarur.  Shu   bilan  birga,  yuzlar   qiymatini   ozlashtiruvchi
ko'plik qo'shiladi. 
5.   Qo'shilgan   yuzlar   ustida   ishlayotganingizda,   yo'lda   tiziq   paytida   o'radigan
burchaklarni   tanlab,   ularni   boshqa   yuzlarga   qo'shing.   Ular   esa   yo'lni   o'tadigan
burchaklarni aylanish va yuzlarni aniqlash uchun qayta aloqada. 
6.   Barcha   burchaklar   aylanish   natijasida   o'rab   turilsa,   algoritm   tugallanadi   va
barcha grafik yuzlarini aniqlab beradi.
13 C++   dasturlash   tili   orqali   dasturlarni   yozish   uchun   ishlatiladi.   Bu   tilda   yozilgan
dasturlar   yoki   kodlar   bilan   kompyuter   va   boshqa   qurilmalar   orasida
kommunikatsiya   o'rnatish,   ilovalarni   yaratish   va   boshqalar   kabi   bir   nechta
vazifalarni   bajarish   mumkin.   C++   oson   sintaksisga   ega   bo'lib,   yuqori   darajadagi
ulushi   va   effektiv   qollanishi   bilan   ajralib   turadi.   Bu   yaxshi   yonuvchi   tili
hisoblanadi, chunki u odatda tezkor va qulay ishlashda yordam beradi.
Planar grafikning tashqi yuzlarini aniqlash uchun foydalaniladigan algoritmlardan
biri,   "Tashqi   Yuzlarin   Aniqlanishi"   (Face   Culling)   algoritmidir.   Bu   algoritmda,
grafikni   belgilangan   bir   burchak   orqali   ko'zga   ko'rinishida   o'zgartirish   va
ko'rsatkichlar orqali yaxlitlash va kutlash amaliyotlari bajariladi. 
2.3. Planar   grafikning   tashqi   yuzi   uchun   barcha   yuzlarni   aniqlash
algoritmlarini   C++ dasturlash tilda ifodalash
Ushbu algoritm dastur kodi bir qator qilib beriladi:
vector<Face> TashqiYuzlarniAniqlash(vector<Face> grafik) {
    vector<Face> tashqiYuzlar;
    for (int i = 0; i < grafik.size(); i++) {
        for (int j = 0; j < grafik.size(); j++) {
            if(i!=j&&grafik[i].toshqaQo'yilmagan() && grafik[j].toshqaQo'yilmagan())
{
                if (Perpendicular(grafik[i], grafik[j])) {
                    if (InFront(grafik[i], grafik[j])) {
                        grafik[i].toshqaQoy();
                    } else {
14                         grafik[j].toshqaQoy();
                    }
                }
            }
        }
    }
    for (int i = 0; i < grafik.size(); i++) {
        if (grafik[i].toshqaQo'yilmagan()) {
            tashqiYuzlar.push_back(grafik[i]);
        }
    }
    return tashqiYuzlar;
}
Bu   dastur   kodi,   grafik   objektlarining   toshqadan   qo'yilmaganligini
(toshqaQo'yilmagan())   va   ularning   perpendikulyar   bo'lishini   (Perpendicular())
aniqlaydi.   Shuningdek,   bir   yuzning   boshqa   yuzdan   oldin   joylashib
joylanmaganligini (InFront()) aniqlaydi. Tashqi  yuzlar ro'yxatida aniqlangan Face
obyektlarini saqlab, uni qaytaradi.
15 Bu   dastur   kodi   faqat   bir   yulduzcha   hisoblanadi.   Ushbu   algoritmdan   foydalanib,
tashqi yuzlarni aniqlashda boshqa algoritmlar va imkoniyatlarni ham o'rganishingiz
mumkin.
Quyidagi  C++  dasturlash  tili   kodida  planar  grafikning tashqi  yuzini   topish  uchun
algoritmani ko'rsatish mumkin:
#include <iostream>
#include <vector>
using namespace std;
// To'plamni ifodalovchi ko'ordinatalarni saqlash uchun struct
struct Point {
    int x, y;
};
//2 nuqta orasidagi g'ildirakning belgilangan tomoni
int orientation(Point p, Point q, Point r) {
    int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
    if (val == 0)
        return 0;          
 // 3 nuqta bir xattada joylashgan
    else if (val > 0)
        return 1;           // Chiqaruvchi g'ildirak
    return 2;               // Kiruvi g'ildirak
16 }
// Planar grafik tashqi yuzini topish uchun boshqaruvchi funksiya
vector<Point> convexHull(vector<Point> points, int n) {
    if (n < 3)
        return vector<Point>();     // Kamida 3 ta nuqta kerak
    vector<Point> hull;
   // Chapmoqda eng kichik va opoq nuqta
    int leftMost = 0;
    for (int i = 1; i < n; i++) {
        if (points[i].x < points[leftMost].x)
            leftMost = i;
        else if (points[i].x == points[leftMost].x && points[i].y < points[leftMost].y)
            leftMost = i;
    }
    int current = leftMost, next;
  do {
        // Nuqtani eng o'lchamli ko'chirish
        hull.push_back(points[current]);
        next = (current + 1) % n;
        for (int i = 0; i < n; i++) {
17              // Agar i-nuqta current -> next ya'ni g'ildirakda yoki i-nuqta hull-da emas
bo'lsa
            if (orientation(points[current], points[i], points[next]) == 2) {
                next = i;           // next ni i-ga almashtiramiz
            }
        }
        current = next;             // current ni next ga almashtiramiz
    } while (current != leftMost);   // Chapmoqgacha davom etadi
    
    return hull;
}
//   Boshqa   funksiyada   malumotlarni   kiritib,   convexHull   funksiyasini   chaqirib
natijani ekranga chiqaramiz
int main() {
    int n;
    cout << "Nechta nuqta kiritasiz? ";
    cin >> n;
    vector<Point> points(n);
    cout << "Nuqtalarni kiriting (x, y):\n";
    for (int i = 0; i < n; i++) {
18         cin >> points[i].x >> points[i].y;
    }
 vector<Point> convexHullPoints = convexHull(points, n);
   cout << "Tashqi yuzdagi (convex hull) nuqtalar:\n";
    for (int i = 0; i < convexHullPoints.size(); i++) {
        cout << convexHullPoints[i].x << " " << convexHullPoints[i].y << "\n";
    }
   return 0;
}
Ushbu   dastur   convex   hull   (tashqi   yuz)   problemasini   hal   qiluvchi   Andrew's
monotone chain algoritmini amalga oshiradi. Foydalanuvchi n ta nuqta kiritadi va
dastur   tashqi   yuzdagi   nuqtalarni   topadi   va   chiqaradi.   Dastur   davomida
foydalanuvchi nuqtalarni x va y koordinatalari bilan kiritadi.
# include   <iostream>
# include   <vector>
using   namespace  std;
struct   Point  {
     int  x, y;
};
// Nuqtalarni taxlaydigan qavsni teskari bo'lishini tekshirish
bool   isClockwise ( const  Point& p1,  const  Point& p2,  const  Point& p3)   {
     int  result = (p2.y - p1.y) * (p3.x - p2.x) - (p2.x - p1.x) * (p3.y - p2.y);
     return  result <  0 ;
}
// Nuqtalarning tashqi yuzini topish
vector<Point>  findConvexHull (vector<Point> points)   {
     int  n = points. size ();
     if  (n <  3 ) {
19          return  {};
    }
     int  leftmost =  0 ;
     for  ( int  i =  1 ; i < n; i++) {
         if  (points[i].x < points[leftmost].x) {
            leftmost = i;
        }
    }
     int  current = leftmost;
    vector<Point> hull;
     do  {
        hull. push_back (points[current]);
         int  next = (current +  1 ) % n;
         for  ( int  i =  0 ; i < n; i++) {
             if  ( isClockwise (points[current], points[i], points[next])) {
                next = i;
            }
        }
        current = next;
    }  while  (current != leftmost);
     return  hull;
}
int   main ()   {
    vector<Point> points = {
        { 0 ,  0 },
        { 1 ,  3 },
        { 2 ,  1 },
        { 3 ,  4 },
        { 5 ,  2 },
        { 6 ,  3 },
        { 8 ,  0 },
        { 9 ,  2 }
    };
    vector<Point> convexHull =  findConvexHull (points);
    cout <<  "Tashqi yuz nuqtalari: " ;
     for  ( const  Point& point : convexHull) {
        cout <<  "("  << point.x <<  ", "  << point.y <<  ") " ;
    }
     return   0 ;
}
Ushbu   kod   tashqi   yuz   nuqtalarini   topish   algoritmini   implement   qiladi.   Kodda,
`Point`   struct'i   nuqta   koordinatalarini   saqlash   uchun   foydalaniladi.   `isClockwise`
funksiya nuqtalarning taxlash tartibini tekshirib, `findConvexHull` funksiya tashqi
20 yuz   nuqtalarini   topish   uchun   ishlatiladi.   Dasturning   boshida,   test   maqsadida   bir
nechta   `Point`   obyektlari   aniqlangan.   Keyin   `findConvexHull`   funksiyasi   bilan
tashqi yuz nuqtalarini topamiz va natijani ekranga chop etamiz.
++
#include <iostream>
using namespace std;
struct Point {
    int x, y;
};
bool isOnSegment(Point p, Point q, Point r) {
    if (q.x <= max(p.x, r.x) && q.x >= min(p.x, r.x) &&
        q.y <= max(p.y, r.y) && q.y >= min(p.y, r.y)) {
        return true;
    }
    return false;
}
int orientation(Point p, Point q, Point r) {
    int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
    if (val == 0) {
        return 0;
    }
    return (val > 0) ? 1 : 2;
}
bool doIntersect(Point p1, Point q1, Point p2, Point q2) {
    int o1 = orientation(p1, q1, p2);
    int o2 = orientation(p1, q1, q2);
    int o3 = orientation(p2, q2, p1);
    int o4 = orientation(p2, q2, q1);
    if (o1 != o2 && o3 != o4) {
        return true;
    }
    if (o1 == 0 && isOnSegment(p1, p2, q1)) {
        return true;
    }
    if (o2 == 0 && isOnSegment(p1, q2, q1)) {
        return true;
    }
    if (o3 == 0 && isOnSegment(p2, p1, q2)) {
        return true;
    }
    if (o4 == 0 && isOnSegment(p2, q1, q2)) {
        return true;
    }
21     return false;
}
bool isPlanar(Point polygon[], int n) {
    if (n < 3) {
        return false;
    }
    for (int i = 0; i < n; i++) {
         int next = (i + 1) % n;
        for (int j = i + 1; j < n; j++) {
            int nextj = (j + 1) % n;
            if (doIntersect(polygon[i], polygon[next], polygon[j], polygon[nextj])) {
                return false;
            }
        }
    }
    return true;
}
int main() {
    Point polygon[] = {{0, 0}, {1, 1}, {1, 0}};
    int n = sizeof(polygon) / sizeof(polygon[0]);
    if (isPlanar(polygon, n)) {
        cout << "Bu planar grafik" << endl;
    } else {
        cout << "Bu planar grafik emas" << endl;
    }
    return 0;
}
O'zingiz   uchun   quyidagi   C++   kodi   yordamida   planar   grafikning   tashqi   yuzini
aniqlash algoritmini ko'rishishingiz mumkin:
#include<iostream>
using namespace std;
struct Point {
    int x, y;
22 };
// Yuzlarning joylashgan yo'lakni tekshirish funksiyasi
bool onSegment(Point p, Point q, Point r) {
    if (q.x <= max(p.x, r.x) && q.x >= min(p.x, r.x) &&
        q.y <= max(p.y, r.y) && q.y >= min(p.y, r.y))
        return true;
    return false;
}
// Ikkita nuqtani orqali guruhlar ifodasi bilan yumalashish funksiyasi
int orientation(Point p, Point q, Point r) {
    int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
    if (val == 0) return 0;  // 3 nuqta tek ishlaydi
    return (val > 0) ? 1 : 2; // yoki 1 yoki 2 qaytaradi
}
// Ikki yuzning bir-biriga kirishishini tekshirish funksiyasi
bool doIntersect(Point p1, Point q1, Point p2, Point q2) {
    int o1 = orientation(p1, q1, p2);
23     int o2 = orientation(p1, q1, q2);
    int o3 = orientation(p2, q2, p1);
    int o4 = orientation(p2, q2, q1);
    // umumiy holatda bunday nuqta ifodasi kerak emas
    if (o1 != o2 && o3 != o4)
        return true;
    // Nuqtalar kesishmasa, ular bir-birini tomirlashishiga masalan ekan
    if (o1 == 0 && onSegment(p1, p2, q1)) return true;
    if (o2 == 0 && onSegment(p1, q2, q1)) return true;
    if (o3 == 0 && onSegment(p2, p1, q2)) return true;
    if (o4 == 0 && onSegment(p2, q1, q2)) return true;
    return false; // Kesishma yo'q
}
// Planar grafikda hamma yuzlarni tekshirish funksiyasi
bool isPlanar(Point polygon[], int n) {
    // Tanlangan kvadrat xususiyatlari uchun barcha burchaklarni tekshiring
24     for (int i = 0; i < n; i++) {
        Point p1 = polygon[i];
        Point p2 = polygon[(i + 1) % n];
                //   Aeroplan   grafikning   umumiy   holatda   qarasida   kesishayotgan   yuzlarini
tekshirish
        for (int j = i + 1; j < n; j++) {
            Point q1 = polygon[j];
            Point q2 = polygon[(j + 1) % n];
            if (doIntersect(p1, p2, q1, q2))
                return false; // kesishma mavjud
        }
    }
    return true; // Planar grafik
}
int main() {
25     // N ta nuqta to'plami bilan planar grafikni ko'rsatadi
    Point polygon[] = { {1, 1}, {3, 1}, {3, 2}, {2, 2}, {2, 3}, {1, 3} };
    int n = sizeof(polygon) / sizeof(polygon[0]);
    if (isPlanar(polygon, n))
        cout << "Bu bir planar grafik" << endl;
    else
        cout << "Bu bir planar grafik emas" << endl;
    return 0;
Ushbu   dastur   kodida,   C++   tilida   qushilganida,   berilgan   nuqtalar   massivini
ko'rsatadi. Agar u planar grafik bo'lsa, so'rov natija sifatida "Bu bir planar grafik"
degan   natija   chiqariladi.   Aks   holda   "Bu   bir   planar   grafik   emas"   degan   xabar
beriladi. Ushbu algoritmda barcha yuzlar zarur ekanligini tekshiriladi, keyinchalik
ular orasidagi kesishishlarni aniqlash uchun qo'llaniladi.
2.4.  Dasturni murakkabligini baholash
# include   <iostream>
# include   <vector>
using   namespace  std;
struct   Point  {
     int  x, y;
};
// Nuqtalarni taxlaydigan qavsni teskari bo'lishini tekshirish
bool   isClockwise ( const  Point& p1,  const  Point& p2,  const  Point& p3)   {
     int  result = (p2.y - p1.y) * (p3.x - p2.x) - (p2.x - p1.x) * (p3.y - p2.y);
     return  result <  0 ;
26 }
// Nuqtalarning tashqi yuzini topish
vector<Point>  findConvexHull (vector<Point> points)   {
     int  n = points. size ();
     if  (n <  3 ) {
         return  {};
    }
     int  leftmost =  0 ;
     for  ( int  i =  1 ; i < n; i++) {
         if  (points[i].x < points[leftmost].x) {
            leftmost = i;
        }
    }
     int  current = leftmost;
    vector<Point> hull;
     do  {
        hull. push_back (points[current]);
         int  next = (current +  1 ) % n;
         for  ( int  i =  0 ; i < n; i++) {
             if  ( isClockwise (points[current], points[i], points[next])) {
                next = i;
            }
        }
        current = next;
    }  while  (current != leftmost);
     return  hull;
}
int   main ()   {
    vector<Point> points = {
        { 0 ,  0 },
        { 1 ,  3 },
        { 2 ,  1 },
        { 3 ,  4 },
        { 5 ,  2 },
        { 6 ,  3 },
        { 8 ,  0 },
        { 9 ,  2 }
    };
    vector<Point> convexHull =  findConvexHull (points);
    cout <<  "Tashqi yuz nuqtalari: " ;
     for  ( const  Point& point : convexHull) {
        cout <<  "("  << point.x <<  ", "  << point.y <<  ") " ;
    }
     return   0 ;
}
27 Dastur   kodining   vaqt   va   xotira   boyicha   murakkabligini   aniqlash   uchun   "time
complexity" va "space complexity" ni ko'rib chiqamiz:
  - "Time complexity" yoki vaqtni aniqlash, dastur kodining ishga tushirilish vaqti
bilan   bog'liq.   Bu   kodda   "findconvexhull"   funksiya   orqali   "convex   hull"   ni   topish
uchun   qavsni   tekshirish   amallari   bajargan   bo'ladi.   Shu   sababli,   bu   funksiya   "n"
nuqta   boricha   bir   martta   yuritiladi.   Qavsni   tekshirish   uchun   "isclockwise"
funksiyasi   ham   "n"   martta   yuritiladi.   Shu   sababli,   umumiy   ravishda   "n"   nuqta
bo'yicha dastur mavjud. Unga qarab, kodning  "Time complexity" si O(n).  
-   "Space   complexity"   yoki   xotirani   aniqlash,   kodning   ishlatgan   xotirani   talab
qiladi.   Shu   kodda   ikkita   vector   (points   va   hull)   va   bir   nechta   nuqtalar
o'zgaruvchilari   mavjud.   Bu   nuqtalar   va   voronaka   qavsni   tekshirish   uchun   zarur
bo'lgan   o'zgaruvchilari   saqlash   uchun   zarur   xotira   miqdori   bilan   bog'liq.   Shu
sababli,   umumiy   ravishda   "n"   ta   nuqta   bo'yicha   qavsni   tekshirishga   talab   bo'lgan
xotira xajmi. Unga qarab, kodning  "Space complexity" si O(n ).              
28 Xulosa
Planar   grafiklarning   tashqi   yuzini   tanib   olish   grafiklar   nazariyasida
kompyuter   grafikasi,   tarmoq   dizayni   va   hisoblash   geometriyasidagi   turli   xil
ilovalar bilan muhim muammo hisoblanadi. Biz tashqi yuzni tanib olish uchun bir
nechta algoritmlarni, jumladan chuqurlik-birinchi qidiruv, kenglik-birinchi qidiruv,
chap   yuzni   o tkazish   algoritmi   va   Chrobak-Payne   to g ri   chiziqli   o rnatishʻ ʻ ʻ ʻ
algoritmini muhokama qildik. Har bir algoritm vaqtning murakkabligi, makonning
murakkabligi va amalga oshirish qulayligi nuqtai nazaridan o'zining afzalliklari va
o'zaro kelishuviga ega. Ushbu algoritmlarni va ularning ilovalarini tushunish bizga
turli sohalardagi murakkab muammolarni samarali hal qilish imkonini beradi.
29 Foydalanilgan adabiyotlar
1.   "Planar   Graphs:   Theory   and   Algorithms"   -   Lowell   W.   Beineke   va   Robin   J.
Wilson
  2.  "Graph Theory and Its Applications" - Jonathan L. Gross va Jay Yellen
  3.  "Planar Graphs: An Introduction" - Tomaž Pisanski va Bojan Mohar
  4.  "Graph Theory and Complex Networks: An Introduction" - Maarten van Steen
  5.   "Handbook   of   Graph   Theory"   -   Jonathan   L.   Gross   va   Jay   Yellen   (3-qismda
planar grafiklar haqida tafsilotlar mavjud)
30

Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlari Mundarija KIRISH 1-bob………………………………………………………………………………4 1. 1. Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlari tushunchasi ………………………………………………………………………5 2-bob 2.1. Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlari tushunchasi ………………………………………………………………………5 2.2. Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmiga oid misollar ………………………………………………………………………5 2.3. Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlarini C++ dasturlash tilda ifodalash ……………………………………………………5 2.4. Dasturni murakkabligini baholash ……………………………………………5 Xulosa ……………………………………………………………….........………30 Foydanilgan adabiyotlar ………………………………………………....……31 1

Kirish Planar grafikning tashqi yüzini aniqlash uchun bir necha algoritmlar mavjud. Planar grafik, barcha qatorlari qarshilashm asligi (crossing) yoki faqat bitta birikmali (multiple) qator (edge)ning mavjudligini bildiradi. Quyidagi algoritmlar planar grafikning tashqi yüzini aniqlashda foydalaniladi: 1. Planarlık testi (Planarity Test): Bu algoritmlar grafikning bir nechta qanchalarini muqobil qatorlarning kesishmasini tekshiradi. Engelessan to'plami (Face of a Graph) usulini ishlatadi. 2. PQ daraxti (PQ-tree): Bu algoritmda, grafikning barcha tashqi yuzlarni topish uchun " PQ daraxti " strukturasidan foydalaniladi. 3. Gramiy-Di-Battista algoritmi: Bu algoritm birikmalarning kirishmasini aniqlash uchun ishlatiladi. Qatorlar orasidagi pontos uyg'unligini bildiradi. 4. Tarjima algoritmlari (Embedding algorithms): Bu tarz algoritmlar grafikni planar bir koordinat sistemiga joylashtirish uchun foydalaniladi. Bu koordinat sistemga ko'chirilgan grafik tashqi yüzini olish uchun bir bita tarjima algoritmasidan foydalanish mumkin. Bu algoritmlardan har biri, grafikning to'plamlarni, qatorlarni va yuzlarni aniqlashning turli xususiyatlariga ega bo'lishi mumkin. Tashqi yuzini aniqlash algoritmlari kompyuter grafikasi, kartografiya, tizimlar va boshqa sohalarda foydalaniladi. Planar grafikalarni tashqi yuzini aniqlash algoritmlari ning muallifi Robert Endre Tarjan hisoblanadi. U uning adiblari, qo'yilmalar yuzasining 2

birakilmaslari, qadamlashtirilgan bunyod etish va boshqalar, planar grafikalar bilan bog'liq sohalarda yuqori darajada faol bo'lib, bu sohaga katta qo'shimcha hissa kiritgan. Tarjan aniqlovchiligi muhim matematik vositalardan biri sifatida tanilgan va planar grafikalar sohasidagi yutuqlarni aniqlashda muvaffaqiyatli qo'llanilgan. 1-bob 1.1.SPlanar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmlari tushunchasi Planar grafik, ikki boylik grafiklardan iborat bo'lgan grafik turlari jismini tushuntiradi. Bu turlar x va y o'qlari orqali boshqa boshqa nuqtalarni bog'lash orqali ko'rsatiladi. Planar grafiklarda nuqta, chiziq, ko'ordinata akseksiya, maydon va boshqa elementlar bilan ishlovchi metod va tushunchalar qo'llaniladi. Planar grafiklarni tashqi yuzlari esa, planar grafiklarning plotterlar, monitorlar, printerlar yoki boshqa chizish vositalariga aylantirilgan formatlardagi ko'rinishlari hisoblanadi. Bu tashqi yuzlar arqali ma'lumotlar o'qilishi, ko'rishishi va ulardan foydalanishga imkon beradi. Bu faqat nazariy ta'riflar hisoblanadi. Planar grafikning yuzlari, bir otvetarafoq, quti yoki boshqa geometrik asoslar ustida joylashtirilgan geometrik shakllardir. Ular, bir-birini kesmagan yoki bir-biriga tegishli bo'lgan chiziqlarni umumiy holatda butunlay o'zgartirishsiz chizish imkoniyatiga ega bo'lgan uch xarakteristikadan iboratdir: 1. Yuzlar qatlamlari: Har bir yuz qatlami bir-qatlamga tegishli girih bo'lib, bitta yuzning bir-tomonli hajmi va tartiblanishi bilan ta'minlanadi. 2. Qatlamlar tarmog'i: Yuzlar qatlamlari butunlay urtasiga tez-tez taklif etilgan bo'lib, bir-birini kesmagan aylana bo'lib chiziladi. 3. Tashkil etish shartlari: Planar grafikning har bir yuzi, asosiy grafik tashkil etish prinsiplari va qoidalari asosida joylashtiriladi 3

Ushbu tushunchalar, planar grafikda yuzlar haqida ma'lumot berishda yordam berishi mumkin bo'lgan yordamchi bir tavsifdir Planar grafik, bir xaritada qo'yg'anga qo'yilgan xech turdagi grafiklardir, masalan, uchburchaklar, to'g'ri to'rtburchaklar va boshqalar. Grafikda barcha yo'l, yuz va boshqa birlashmalarning uchburchaklarga qo'yilgan gradientlari to'g'ri kesishishi mumkin emas. Yuzlar tasviri, bir sovrin suyuq trafik holatida quvurla mo'ljalangan bir material yuzi orqali tasvirlanadi. Grafikda har bir yuz, yuzlarning mosligi va ularning ko'rsatish tartiblari bilan ifodalangan eng to'g'ri loyihalardan birini ifodalaydi. Yuzlar orqali oynashgan maqolalarga yoki obyektlarga murojaat qilish mumkin. Planar grafikning yuzlar orasidagi aloqalariga "yuzboshqaruv" deyiladi. Yuzboshqaruv, har bir yuzning qaysi boshqa yuz bilan biriktirilganligini ifodalaydi. Ikkita yuz bir-biriga toqqa tiyilgan bo'lsa, ulardagi aloqa "kattalashish" deb ataladi. Boshqa so'zlar bilan aytganda, yuzlar orasidagi aloqa oldindan belgilanganlik, bemalol topiladigan yuzlarning yo'naltirilishi orqali aniq bo'ladi. Bunday belgilar asosida planar grafikning umumiy muhit soni va yuzlarning umumiy soni topilishi mumkin.Planar grafik, qatorlar va burchaklar bilan ifodalangan grafikdir, lekin boshqa elementlar (masalan, yuzlar) bir biriga tegishlilikka ega emas. Planar grafikda har bir burchak faqat bir nechta qatorlar bilan bog'langanligi uchun u planar deb ataladi. Yuzlar, bir grafikdagi qatorlar to'plamining ifodalangan qismidir. Bu yuzlar, qatlarni ajratish orqali hosildor bo'lib, yozuvchi uchun aloqador ma lumotlar berganlikda foydalaniladi. Amalda,ʼ planar grafikda yuzlar va qatorlar orasidagi aloqalar, yuzlar qatlarni tegishlantirish orqali ifodalangan. Bu aloqalar planar grafiklarni aylanib-yugurishsiz ifodalaydi.Planar grafik, grafikning bir joyida yoza, bunday qatorlar o'zaro kesishmaydigan bir ko'rgazmani tashkil etadi. Ya'ni, bu grafikdagi har bir qatorda faqat bir ta'velzor (yoki bombozlik) bo'ladi. Yuzlar, planar grafikning qatorlar orqali ajratilgan tekisliklaridir. Yuzlar bir-biriga tegmasdan va bo'shliksizdirlar. 4

Umul qiling, planar grafikning yuzlar va qatorlar ko'ptir. Yuzlar o'rnatish, operatsiyalar va graflar teoriyasi sohasidagi muxim mavzulardan biridir. lanar grafik, boshqa bir deganicha, qoidalariga javob beruvchi grafikdir, ya'ni bir xil ko'plikni kesishuvchan holda aks ettirmaydi 2.2.Planar grafikning tashqi yuzi uchun barcha yuzlarni aniqlash algoritmiga oid misollar Planar grafiklar, bir cho'miladagi harakat bilan yuqoriga chiqmaydigan bir yuzsizlikda chizilgan grafiklardir. Bu misollar, planar grafiklarni ko'rsatadi. 1. Chapdagi misolda, uchta doira berilgan. Ular haqiqiyayam da doira yuqoriga chiqmaydi. Shuningdek, ular qo'llar ichida ham kesib yuruvchilar yo'q. A---B | <!-- Doiralar --> | <!-- kesib yuruvchilar --> C---D 2. Keyingi misolda, uchta to'rtburchak berilgan. Bir biriga uzluksiz chechaklar bilan kesib yurilgan. Bu kesib yurikalarning har biri to'rtburchakni ikkita qirralariga bog'langan. ---- | | 5