<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Studijos &#187; Diskrečioji matematika</title>
	<atom:link href="http://www.patariu.lt/studijos/category/diskrecioji-matematika/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.patariu.lt/studijos</link>
	<description>Nemokami referatai, interpretacijos, mokomoji medžiaga</description>
	<lastBuildDate>Thu, 17 Nov 2011 12:47:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Grafų teorija (konspektas)</title>
		<link>http://www.patariu.lt/studijos/2009/01/grafu-teorija-konspektas/</link>
		<comments>http://www.patariu.lt/studijos/2009/01/grafu-teorija-konspektas/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 21:52:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diskrečioji matematika]]></category>

		<guid isPermaLink="false">http://www.patariu.lt/studijos/?p=915</guid>
		<description><![CDATA[Grafai. Ciklai. Keliai. Grafas &#8211; figūra, sudaryta iš taškų (vadinamų viršūnėmis) ir atkarpų (vadinamų briaunomis). Briauna nebūtinai turi būti tiesi linija (gali būti lenkta, banguota), tačiau ji visada jungia dvi viršūnes. Kai briauna jungia viršūnę su ja pačia, ji vadinama kilpa. Grafas gali būti sudarytas iš dviejų ar daugiau atskirų nesujungtų dalių. Tokie grafai vadinami [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Grafai. Ciklai. Keliai.</strong></p>
<p style="text-align: left;">Grafas &#8211; figūra, sudaryta iš taškų (vadinamų viršūnėmis) ir atkarpų (vadinamų briaunomis). Briauna nebūtinai turi būti tiesi linija (gali būti lenkta, banguota), tačiau ji visada jungia dvi viršūnes. Kai briauna jungia viršūnę su ja pačia, ji vadinama kilpa. Grafas gali būti sudarytas iš dviejų ar daugiau atskirų nesujungtų dalių. Tokie grafai vadinami nejungiaisiais, o atskiri jo &#8220;gabalai&#8221; &#8211; grafo komponentėmis. Grafas yra sąsajų struktūra: jis mums pasako, kad  yra objektų grupė (viršūnės) ir kad šie objektai yra tarpusavyje susiję (arba nesusiję). Kaip šie objektai susiję &#8211; nurodo briaunos.</p>
<p style="text-align: left;">•Dvi viršūnės vadinamos gretimomis, jei jas jungia bent viena briauna.</p>
<p style="text-align: left;">•Viršūnės laipsnis yra briaunų, išeinančių iš tos viršūnės, skaičius (kilpos &#8220;įnašas&#8221; lygus 2). Viršūnė, kurios laipsnis 0, vadinama izoliuota.</p>
<p style="text-align: left;">•Grafo keliu vadinama gretimų viršūnių seka. Kelyje ta pati viršūnė gali būti kelis kartus, tačiau ta pati briauna gali pasitaikyti tik <em>vieną kartą</em>.</p>
<p style="text-align: left;">•Kelias vadinamas ciklu, jei jis prasideda ir baigiasi ta pačia viršūne.   •Sakoma, kad grafas jungusis, jei bet kurias dvi viršūnes galima sujungti keliu. Tai reiškia, kad iš vienos viršūnės galima nukeliauti į bet kurią kitą. Priešingu atveju grafas vadinamas nejungiuoju. Nejungusis grafas yra sudarytas iš jungiųjų dalių, vadinamų grafo komponentėmis.</p>
<p style="text-align: left;">•Jeigu jungiajame grafe yra tokia briauna, kurią ištrynus grafas tampa nejungiuoju, ji vadinam tiltu.</p>
<p style="text-align: left;">•Jei kelią sudaro visos jungiojo grafo briaunos (lygiai po vieną kartą), jos vadinamas Oilerio keliu. Oilerio kelias, kuris prasideda ir baigiasi toje pačioje viršūnėje, vadinamas Oilerio ciklu.</p>
<p style="text-align: left;"><strong><strong>Maršrutų sudarymo</strong> uždaviniai &#8211; tai uždaviniai, kylantys ieškant efektyviausio kelio nugabenti į paskirties vietas prekes ar suteikti paslaugas. Bendras Oilerio ciklų uždavinių bruožas &#8211; tai poreikis <em>efektyviai</em> apeiti visas gatves (šaligatvius, kelius ir t.t.) nurodytoje vietovėje &#8211; mieste ar miesto rajone. </strong></p>
<p style="text-align: center;"><strong>Oilerio teoremos</strong></p>
<p style="text-align: left;"><strong> <strong>Pirmoji Oilerio teorema </strong> </strong></p>
<p style="text-align: left;"><strong>•<em>Jei grafas turi nelyginio laipsnio viršūnę, tai jis neturi Oilerio ciklų. </em></strong></p>
<p style="text-align: left;"><strong><em></em> •<em>Jei jungiojo grafo visos viršūnės yra lyginių laipsnių, tai jis turi bent vieną </em><em>Oilerio ciklą (paprastai daugiau kaip vieną).</em><strong></strong></strong></p>
<p style="text-align: left;"><strong><strong> </strong> <strong>Antroji Oilerio teorema </strong> </strong></p>
<p style="text-align: left;"><strong>•<em>Jei grafas turi daugiau kaip dvi nelyginio laipsnio viršūnes, tai jis neturi nė </em><em>vieno Oilerio kelio.</em></strong></p>
<p style="text-align: left;"><strong><em> </em> •<em>Jei jungusis grafas turi lygiai dvi nelyginio laipsnio viršūnes, tai jis turi bent </em><em>vieną Oilerio kelią (paprastai daugiau). Kiekvienas toks kelias prasideda </em><em>vienoje nelyginio laipsnio viršūnėje ir baigiasi kitoje.</em><strong> </strong> <strong></strong></strong></p>
<p style="text-align: left;"><strong><strong>Trečioji Oilerio teorema</strong><em> </em> •<em>Visų grafo viršūnių laipsnių suma yra lyginis skaičius (lygus dvigubam </em><em>briaunų skaičiui). </em></strong></p>
<p style="text-align: left;"><strong><em></em> •<em>Bet kurio grafo nelyginio laipsnio viršūnių skaičius yra lyginis. </em></strong></p>
<p style="text-align: center;"><strong>Flerio algoritmas Oilerio ciklui rasti</strong></p>
<p style="text-align: left;"><strong>•Pirmiausia įsitikiname, ar grafas yra jungusis ir ar visų viršūnių laipsniai yra lyginiai. </strong></p>
<p style="text-align: left;"><strong> •Pradedame nuo bet kurios viršūnės. </strong></p>
<p style="text-align: left;"><strong>•Keliaujame briauna, jei    ji nėra nekeliautos dalies tiltas arba    nėra kito pasirinkimo. </strong></p>
<p style="text-align: left;"><strong>•Sunumeruojame briaunas perėjimo eilės tvarka. </strong></p>
<p style="text-align: left;"><strong>•Darbą baigiame, kai apkeliaujame visas briaunas. </strong></p>
<p style="text-align: center;"><strong>Flerio algoritmas Oilerio keliui rasti</strong></p>
<p style="text-align: left;"><strong> •Pirmiausia įsitikiname, ar grafas yra jungusis ir ar yra tik dvi nelyginio laipsnio viršūnės. </strong></p>
<p style="text-align: left;"><strong>•Pradedame nuo bet kurios nelyginio laipsnio viršūnės. </strong></p>
<p style="text-align: left;"><strong>•Keliaujame briauna, jei    ji nėra nekeliautos dalies tiltas arba    nėra kito pasirinkimo. </strong></p>
<p style="text-align: left;"><strong>•Sunumeruojame briaunas perėjimo eilės tvarka.   •Darbą baigiame, kai apkeliaujame visas briaunas. </strong></p>
<p style="text-align: left;"><strong><!--  --> •Prie grafo prijungtos papildomos briaunos (vadinamos <strong>fiktyviomis</strong>) taip, kad nelyginio laipsnio viršūnės taptų lyginio laipsnio viršūnėmis. Ši grafo perdarymo procedūra, kai viršūnių nelyginumas pašalinamas, prijungiant papildomas briaunas, vadinam <strong>grafo oilerizavimu</strong>. Oilerizuodami grafą, turime atidžiai stebėti, kad prijungiamos briaunos <em>būtų tik </em><em>esančių grafo briaunų dublikatai</em>. Optimali oilerizacija &#8211; kai &#8220;pridėtų&#8221; briaunų skaičius minimalus. </strong></p>
<p style="text-align: left;"><strong>• <strong>Pusiau oilerizavimą</strong> turėsime, kai dviems viršūnėms paliksime nelyginius laipsnius, o visas kitas nelyginio laipsnio viršūnes padarysime lyginio laipsnio viršūnėmis.<br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.patariu.lt/studijos/2009/01/grafu-teorija-konspektas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keliaujančio pirklio uždavinys</title>
		<link>http://www.patariu.lt/studijos/2009/01/keliaujancio-pirklio-uzdavinys/</link>
		<comments>http://www.patariu.lt/studijos/2009/01/keliaujancio-pirklio-uzdavinys/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 22:07:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diskrečioji matematika]]></category>

		<guid isPermaLink="false">http://www.patariu.lt/studijos/?p=918</guid>
		<description><![CDATA[•Kiekvienai nagrinėjamo grafo briaunai bus priskirtas skaičius. Tie skaičiai gali turėti įvairias reikšmes: gali parodyti išlaidas, atstumą, laiką, pakelės medžių skaičių ir pan. Jei grafo briaunoms skirti kokie nors skaičiai, juos vadinsime briaunų svoriais, o patį grafą &#8211; svoriniu grafu. Kalbėdami apie pigiausią, trumpiausią, greičiausią ir t.t. maršrutą, mes vartosime sąvoką optimalus maršrutas. Uždavinių tikslas [...]]]></description>
			<content:encoded><![CDATA[<p>•Kiekvienai nagrinėjamo grafo briaunai bus priskirtas skaičius. Tie skaičiai gali turėti įvairias reikšmes: gali parodyti išlaidas, atstumą, laiką, pakelės medžių skaičių ir pan. Jei grafo briaunoms skirti kokie nors skaičiai, juos vadinsime briaunų <strong>svoriais</strong>, o patį grafą &#8211; <strong>svoriniu grafu</strong>. Kalbėdami apie pigiausią, trumpiausią, greičiausią ir t.t. maršrutą, mes vartosime sąvoką <strong>optimalus maršrutas.</strong> Uždavinių tikslas &#8211; rasti optimalų maršrutą, kuris prasideda ir baigiasi nurodytoje viršūnėje ir <em>eina per kiekvieną </em><em>viršūnę lygiai vieną kartą</em>.</p>
<p>•Ciklas, kuris prasideda kurioje nors grafo viršūnėje ir, patekęs į kiekvieną kitą grafo viršūnę lygiai vieną kartą, vėl grįžta į pradinę viršūnę, vadinamas <strong>Hamiltono ciklu</strong>. Deja, nėra universalaus būdo atsakyti į klausimą, ar grafas turi Hamiltono ciklą. Paprastai, kuo grafe daugiau briaunų, tuo tikėtiniau, kad jis turi Hamiltono ciklą.</p>
<p style="text-align: center;"><strong>Dirako teorema</strong></p>
<p style="text-align: left;">Tarkime, kad jungusis grafas turi ne mažiau kaip tris viršūnes. Jei kiekviena grafo viršūnė yra gretima bent pusei viršūnių, tai grafas turi Hamiltono ciklą.</p>
<p style="text-align: left;">•Grafas, turintis <em>N</em> viršūnių, ir jei kiekviena viršūnė yra gretima visoms likusioms, vadinamas pilnuoju grafu. Pilnasis <em>N</em>-viršūnis grafas turi (<em>N</em>-1)!=1´2´3´&#8230;´<em>N </em> Hamiltono ciklų. Pusė jų pakartoja kitą pusę atvirkščia tvarka.</p>
<p style="text-align: left;">•Pilnojo svorinio grafo optimalaus Hamiltono ciklo radimo uždavinys daug kur taikomas ir paprastai vadinamas keliaujančiojo pirklio uždaviniu (KPU), nors nebūtinai sąlygoje kalbėsime apie prekybą.</p>
<p style="text-align: center;"><strong>KPU sprendimo jėgos algoritmas</strong></p>
<p style="text-align: left;">•Surašome visus svorinio grafo Hamiltono ciklus.</p>
<p style="text-align: left;">•Sudedame kiekvieno Hamiltono ciklo visų briaunų svorius (jų suma vadinama ciklo svoriu).</p>
<p style="text-align: left;">•Iš visų išrenkame mažiausio svorio ciklą &#8211; jis ir yra uždavinio sprendinys.</p>
<p style="text-align: left;"><strong><!--  --> </strong>•Šis algoritmas turi tik vieną trūkumą &#8211; jis reikalauja patikrinti visų grafo ciklų svorius. O kuo didesnis viršūnių skaičius, tuo daugiau ciklų mums reikės rasti ir patikrinti. Taigi, algoritmus galėtume suskirstyti į <em>gerus</em> (kuriuos dar vadinsime efektyviais) ir <em>blogus</em> (juos dar vadinsime neefektyviais).</p>
<p style="text-align: left;">•Apytikrio algoritmo terminą vartosime, kalbėdami apie algoritmą, dažniausiai duodantį sprendinį, pakankamai artimą optimaliam.</p>
<p style="text-align: center;"><strong>Artimiausiojo kaimyno algoritmas</strong></p>
<p style="text-align: left;"><strong><!--  --> </strong>•Kelionę pradedame iš namų.</p>
<p style="text-align: left;">•Kad ir kur bebūtume, kitą dar neaplankytą viršūnę renkamės tą, į kurią nuvykti pigiausia (t.y. artimiausią kaimyną). Jei tokių viršūnių yra kelios, galime rinktis bet kurią. Taip elgiamės, kol aplankome visas viršūnes.</p>
<p style="text-align: left;">•Iš paskutinės grįžtame namo.</p>
<p style="text-align: center;"><strong>Kartotinis artimiausiojo kaimyno algoritmas</strong></p>
<p style="text-align: left;">•1 žingsnis. Pasirenkame bet kokią viršūnę ir taikome artimiausiojo kaimyno algoritmą.</p>
<p style="text-align: left;">•2 žingsnis. Kartojame 1 žingsnį su visomis grafo viršūnėmis.</p>
<p style="text-align: left;">•3 žingsnis. Iš visų 2 žingsnyje gautų Hamiltono ciklų išrenkame geriausią sprendinį.</p>
<p style="text-align: left;">•4 žingsnis. Perrašome 3 žingsnyje gautą sprendinį, pradiniu tašku imdami namų viršūnę.</p>
<p style="text-align: center;"><strong>Pigiausios jungties algoritmas</strong></p>
<p style="text-align: left;">•1 žingsnis. Pirmiausia išrenkame mažiausio svorio briauną. (Jei tokių yra daugiau nei viena &#8211; renkamės bet kurią). Šią briauną pasižymime.</p>
<p style="text-align: left;">•2 žingsnis. Ieškome kitos nepažymėtos briaunos ir pasižymime ją, išskyrus atvejus, kai   •ji sudaro mažesnį ciklą;   •ji yra trečia pažymėta briauna, išeinanti iš  vienos viršūnės.   •Jei tokių briaunų yra daugiau nei viena, rinkis bet kurią.</p>
<p style="text-align: left;">•3, 4, &#8230; žingsniai. Kartojame 2 žingsnį, kol susidarys visas Hamiltono ciklas.</p>
<p style="text-align: center;"><strong><strong>JUNGIANTIEJI MEDŽIAI IR<br />
</strong><strong>ŠTEINERIO MEDŽIAI</strong></strong></p>
<p style="text-align: left;"><strong><strong><!--  --> </strong></strong>•Bendras visų šio tipo uždavinių bruožas &#8211; reikia sujungti keletą objektų (svorinių grafų viršūnių) taip, kad iš kiekvieno objekto galima būtų patekti į bet kurią kitą ir kad bendras sudaryto tinklo svoris būtų <em>minimalus</em>. Jungiant objektus į tinklą, neatsižvelgiama į tai, kiek nepatogūs ar komplikuoti gali būti keliai, jungiantys konkrečius objektus. Vienintelis tikslas, sprendžiant tokius uždavinius, yra sudaryti kiek galima mažesnio bendro svorio tinklą. Tokio tipo uždaviniai yra vadinami minimalaus tinklo uždaviniais. Uždavinio sprendinys -  pradinio grafo pografis. Sprendinio pografio viršūnės turi apimti visas pradinio grafo viršūnes. Sprendinio pografis taip pat turi tenkinti šias dvi papildomas sąlygas:</p>
<p style="text-align: left;">•Jis turi būti <em>jungusis</em>. Tai išplaukia iš to, kad tinklas turi jungti visas grafo viršūnes.</p>
<p style="text-align: left;">•Jame <em>neturi būti ciklų</em> (t.y. turi būti neįmanoma apeiti sprendinio pografio ar jo dalies ir sugrįžti į pradinę viršūnę).</p>
<p style="text-align: center;"><strong><strong> Medžių savybės</strong></strong></p>
<p style="text-align: left;"><span style="text-decoration: underline;">Jungusis grafas, neturintis ciklų, vadinamas medžiu.</span></p>
<p style="text-align: left;">•1 savybė. Jei grafas yra medis, tai bet kurias dvi jo viršūnes jungia vienas ir tik vienas kelias. Ir atvirkščiai, grafas, kurio bet kurias dvi viršūnes jungia tik vienas kelias, yra medis.</p>
<p style="text-align: left;">•2 savybė. Visos medžio briaunos yra tiltai. Atvirkščiai, jungusis grafas, kurio visos briaunos &#8211; tiltai, yra medis.</p>
<p style="text-align: left;">•3 savybė. <em>N</em> viršūnių medis turi <em>N</em>-1 briauną. Atvirkščias teiginys teisingas ne visada.</p>
<p style="text-align: left;">•4 savybė. Jungusis <em>N</em> viršūnių ir <em>N</em>-1 briaunos grafas yra medis.</p>
<p style="text-align: left;"><!--  --> •Tarkime, kad <em>G</em> yra jungusis svorinis grafas. Tarp visų grafo <em>G</em> jungiančiųjų medžių yra vienas (galbūt keli), kurio bendras svoris yra mažiausias. Toks medis vadinamas grafo <em>G</em> minimaliuoju jungiančiuoju medžiu. Todėl ieškodami minimalaus tinklo mes spręsime minimaliojo jungiančiojo medžio (MJM) uždavinius.</p>
<p style="text-align: center;"><strong><strong><strong><strong>Kruskalo algoritmas MJM radimui</strong></strong></strong></strong></p>
<p style="text-align: left;">•1 žingsnis. Randame pigiausią briauną (jei tokių yra ne viena, renkamės bet kurią). Ją pasižymime.</p>
<p style="text-align: left;">•2 žingsnis. Ieškome pigiausios dar nepažymėtos briaunos ir ją pasižymime. Jikiu būdu negalime sudaryti ciklo.</p>
<p style="text-align: left;">•3, 4 ir t.t. žingsniai. Kartojame 2 žingsnį tol, kol pažymėtų briaunų galai (viršūnės) panaudos visas grafo viršūnes. Pažymėtos briaunos ir sudaro ieškomą minimalųjį jungiantįjį medį.       Kruskalo algoritmas yra <em>efektyvus</em> algoritmas, kurio sprendinys <em>optimalus</em>.</p>
<p style="text-align: left;">• Jei nereikalaujama, kad tinklo viršūnės (mazgai) būtų grafo viršūnės (kitaip tariant, leista kurti tinkle naujus mazgus), tai minimalus jungiantysis medis gali ir nebūti geriausias viršūnių sujungimo būdas.</p>
<p style="text-align: left;">•Trumpiausias iš visų tinklų, jungiančių taškų aibę, vadinamas trumpiausiuoju tinklu.</p>
<p style="text-align: left;">•Bet kuris tinklo mazgas, kuriame trys atšakos susieina 120 laipsnių kampu, vadinamas Šteinerio tašku.</p>
<p style="text-align: center;"><strong><strong><strong><strong>Kaip rasti tris taškus jungiantį trumpiausią tinklą? </strong></strong></strong></strong></p>
<p style="text-align: left;">•Jei vienas iš trikampio, sudaryto iš duotųjų taškų, kampas didesnis arba lygus 120°, tai trumpiausias tinklas sutampa su minimaliuoju jungiančiuoju medžiu.</p>
<p style="text-align: left;">•Jei visi trikampio kampai yra mažesni už 120°, tai trumpiausias tinklas ir minimalus jungiantysis medis nesutampa. Trumpiausiąjį tinklą gauname, radę Šteinerio mazgo tašką ir sujungę jį su visomis viršūnėmis.</p>
<p style="text-align: left;">•Trumpiausias tinklas, jungiantis keletą taškų, yra arba   -Minimalus jungiantysis medis (nėra vidinių mazgų), arba   -Šteinerio medis (yra vidinių mazgų). <strong><strong><strong><strong><br />
</strong></strong></strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.patariu.lt/studijos/2009/01/keliaujancio-pirklio-uzdavinys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

