<?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>Bilgisayar Kavramları &#187; Mantık Devreleri (Logic Circuits)</title>
	<atom:link href="http://www.bilgisayarkavramlari.com/category/mantik-devreleri-logic-circuits/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bilgisayarkavramlari.com</link>
	<description>www.bilgisayarkavramlari.com</description>
	<lastBuildDate>Sun, 29 Jan 2012 21:38:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Encoder (Kodlayıcı)</title>
		<link>http://www.bilgisayarkavramlari.com/2012/01/19/encoder-kodlayici/</link>
		<comments>http://www.bilgisayarkavramlari.com/2012/01/19/encoder-kodlayici/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 03:54:00 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Donanım ( Hardware )]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=6150</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bu yazının amacı, bir mantıksal devre elemanı olan kolayıcının (encoder) çalışma mantığını ve tasarımını açıklamaktır. Basit bir kodlayıcı, kod çözücünün (decoder) tersine üssel işlemi geri alır. Örneğin bir kod çözücüde, yapılan işlem 2n şeklinde gelen girdinin (input) üstünü almaktır. 3&#215;8 bir kod çözücüde, gelen 3 bitlik girdinin (input) değeri n [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bu yazının amacı, bir mantıksal devre elemanı olan kolayıcının (encoder) çalışma mantığını ve tasarımını açıklamaktır.</p>
<p>Basit bir kodlayıcı, <a href="http://www.bilgisayarkavramlari.com/2007/12/09/kod-cozucu-decoder/">kod çözücünün (decoder)</a> tersine üssel işlemi geri alır. Örneğin bir kod çözücüde, yapılan işlem 2<sup>n</sup> şeklinde gelen girdinin (input) üstünü almaktır. 3&#215;8 bir kod çözücüde, gelen 3 bitlik girdinin (input) değeri n olarak kabul edilirse, kod çözücü bu değere göre 8 farklı çıktıdan (output) bir tanesini seçer.</p>
<p>Kodlayıcı ise bu işlemin tam tersi yönde 8 farklı girdiden birisinden sinyal gelmesi halinde 3 çıktıdan (output) ilgili ihtimalleri işaretleyerek üst alma işleminin tersini (logaritma) yapar.</p>
<p>Örneğin aşağıda bir 4&#215;2 kodlayıcının (encoder) <a href="http://www.bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk tablosu (truth table)</a> verilmiştir:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011912_0355_EncoderKodl1.png" alt="" /></p>
<p>Tabloda I ile ifade edilen kolonlar girdi (input) ve O ile ilfade edilen kolonlar ise çıktı (output) değerlerdir. Örneğin 0100 değerinin 10&#8242;luk tabanda karşılığı 4 olarak yazılabilir. Bu değerin tablodaki çıktı değeri (output) 10 olarak okunacaktır. 10 değeri ise 10&#8242;luk tabanda 2 olarak yazılabilir. Gerçekten de log<sub>2</sub>4 = 2 olmaktadır ve kodlayıcının bir logaritma işlemi olduğu görülebilir.</p>
<p>Yukarıdaki tabloyu gerçekleyen kodlayıcının genelde kullanlıan blok çizimi aşağıdaki şekildedir:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011912_0355_EncoderKodl2.png" alt="" /></p>
<p>Ayrıca doğruluk tablosunda görülebileceği üzere, V biti (valid bit, kabul edilebilir) kullanılarak tanımsız durumlar ortadan kaldırılabilir. Örneğin logaritmanın tanımından bilindiği üzere 0&#8242;ın logaritması tanımsızdır. Bu durumda bütün girdi (input) bitlerinin 0 olması durumunda çıktı belirsiz olacaktır. İşte bu belirsizlik durumunda çıktının kabul edilemez (invalid) olduğunu ifade için V biti 0 değerinde verilebilir.</p>
<p>Şayet bir <a href="http://www.bilgisayarkavramlari.com/2007/12/09/kod-cozucu-decoder/">kod çözücü (decoder)</a> ile bir kodlayıcı (encoder) arka arkaya bağlanırsa, sistemin girdi değeri, çıktı değeri olarak okunur.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011912_0355_EncoderKodl3.png" alt="" /></p>
<p>Yukarıdaki devrede, soldan verilen girdi sağdan değişmeden okunurken devre tam tersine çevrilerek, sağdan bir girdi verilmesi halinde de soldan okunacaktır.</p>
<p>Kodlayıcı devresini, kapılar kullanarak yapmak da mümkündür. Örnek bir tasarım aşağıda verilmiştir:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011912_0355_EncoderKodl4.png" alt="" /></p>
<p>Doğruluk tablosunun <a href="http://www.bilgisayarkavramlari.com/2007/12/07/karnaugh-haritasi-karnaugh-map/">karnaugh haritasını (karnaugh map)</a> çizersek:</p>
<p>O<sub>0</sub> için</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 75px;" />
<col style="width: 67px;" />
<col style="width: 66px;" />
<col style="width: 66px;" />
<col style="width: 66px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 00</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 01</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 11</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 10</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 00</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 01</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 11</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 10</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki haritada, sonucu etkilemeyen (kodlayıcının çalışması belirsiz ve hiçbir şekilde girdi olarak gelemeyecek değerler) X ile ifade edilmiştir. Bu tip kodlayıcılara (encoder) özel olarak öncelik kodlayıcısı (priority encoder) ismi de verilmektedir. Bu haritada X değerleri 1 veya 0 olarak kabul edilebilir. O halde yukarıdaki tabloda mavi ile işaretlenmiş olan 4 ihtimal tek başına alınarak O<sub>0</sub> için I<sub>0</sub>&#8216;I<sub>2</sub>&#8216; sonucuna varılabilir.</p>
<p>O<sub>1</sub> için</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 75px;" />
<col style="width: 67px;" />
<col style="width: 66px;" />
<col style="width: 66px;" />
<col style="width: 66px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 00</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 01</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 11</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>1</sub>I<sub>0</sub>= 10</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 00</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="background: white; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 01</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 11</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">I<sub>3</sub>I<sub>2</sub>= 10</td>
<td style="background: #8db3e2; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
<td style="background: white; padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">X</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki tabloda da benzer şekilde O<sub>1</sub> için I<sub>1</sub>&#8216;I<sub>0</sub>&#8216; sonucuna varılabilir.</p>
<p>Yukarıdaki sonuçlara göre bir kodlayıcıyı (encoder) aşağıdaki şekilde çizebiliriz:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011912_0355_EncoderKodl5.png" alt="" /></p>

<p class="sayac_bilgi">66 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2012/01/19/encoder-kodlayici/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İleri ve geri zincirleme (Forward and Backward Chaining)</title>
		<link>http://www.bilgisayarkavramlari.com/2012/01/16/ileri-ve-geri-zincirleme-forward-and-backward-chaining-2/</link>
		<comments>http://www.bilgisayarkavramlari.com/2012/01/16/ileri-ve-geri-zincirleme-forward-and-backward-chaining-2/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 23:11:36 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[yapay zeka (artificial intelligence)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=6128</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bu yazının amacı, bilgisayar bilimlerinde, özellikle de mantıksal sistemlerin ispatında kullanılan ileri zincirleme ve geri zincirleme yöntemlerini açıklamaktır. Yöntemin çalışması oldukça basittir. Öncelikle problem, mantık düzleminde modellenir. Buradaki mantık sistemi sonlu ispatı olan herhangi bir system olabilir. Örneğin birinci dereceden mantık (first order logic) veya daha özel olarak boole cebiri [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER
</p>
<p>Bu yazının amacı, bilgisayar bilimlerinde, özellikle de mantıksal sistemlerin ispatında kullanılan ileri zincirleme ve geri zincirleme yöntemlerini açıklamaktır.
</p>
<p>Yöntemin çalışması oldukça basittir. Öncelikle problem, mantık düzleminde modellenir. Buradaki mantık sistemi sonlu ispatı olan herhangi bir system olabilir. Örneğin <a href="http://www.bilgisayarkavramlari.com/2010/03/24/birinci-derece-mantik-first-order-logic/">birinci dereceden mantık (first order logic) </a> veya daha özel olarak boole cebiri kullanılabilir.
</p>
<p>Modelleme aşamasının ardından problemin çözümüne geçilir. İşte tam bu noktada ileri zincirleme (forward chaining) veya geri zincirleme (backward chaining) yöntemlerinden birisi seçilebilir.
</p>
<p>Örneğin aşağıdaki mantıksal sistemi ve şekli ele alalım:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz1.png" alt=""/>
	</p>
<p>Sistemde görüldüğü üzere bazı mantıksal dizilimler verilmiş ve son iki satırda A ve B önermelerinin (kaziye) doğru olduğu belirtilmiştir.
</p>
<p>Buna göre sağdaki çizim, hangi durumlarda, hangi diğer durumların doğru olacağını bu mantıksal sistemden çıkarır. Örneğin p=&gt; q ifadesi, çizimin en tepesinde gösterilmiş ve p önermesinin (predicate, kaziyesinin) doğruluğu halinde q önermesinin de (kaziyesinin de) doğru olacağını ifade etmektedir.
</p>
<p>Benzer şekilde, L <a href="http://www.bilgisayarkavramlari.com/2009/05/07/haber-predicate/">önermesinin (kaziyesinin)</a> doğruluğu A ve B önermelerine bağlı olduğu gibi, A ve P önermelerinin doğruluğuna da bağlanmıştır. Bu iki sistemden birisinin doğru olması sonucun doğruluğunu sağlar.
</p>
<p>Şimdi şekilde gösterilen sistemi ileri zincirleme (forward chaining) yöntemi ile çözelim. Öncelikle sistemdeki bütün doğruluk şartlarını sayısal olarak ifade ediyoruz:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz2.png" alt=""/>
	</p>
<p>Şekilde görüldüğü üzere bütün doğruluk şartları birer sayı ile ifade edilmiştir. Söz gelimi, M önermesinin doğruluğu L ve B önermesi gibi 2 önermenin doğruluğunu gerektirir. Bu yüzden M birleşiminde 2 sayısı bulunur. Benzer şekilde Q önermesinde bulunan 1 sayısı, sadece P önermesinin doğruluğunun yeterli olduğunu ifade etmektedir.
</p>
<p>Şimdi ileri zincirleme yöntemini kullanarak sistemin doğru olduğu verilen A ve B önermelerinden itibaren çözümünü izleyelim.
</p>
<p>Öncelikle A ve B&#8217;ye komşu olan düğümlerdeki değerleri 1&#8242;er azaltıyoruz:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz3.png" alt=""/>
	</p>
<p>Yukarıdaki şekilde ileri zincirleme işlemi (forward chaingin) A önermesi için çalıştırılmış olup A&#8217;nın komşularını 1 azaltmıştır. Sırada B önermesi var ve onu da çalıştıralım:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz4.png" alt=""/>
	</p>
<p>Görüldüğü üzere B&#8217;nin komşuları da 1 azaldığında 0 değerine sahip bir düğüm elde ettik. Bu durumda L&#8217;nin doğru olduğunu söyleyebiliriz çünkü L&#8217;nin doğru olması için gereken 2 değer de sağlandı. Yani mantıksal sistemimizde bulunan
</p>
<p>A <span style="font-family:Symbol">Ù</span> B <span style="font-family:Symbol">Þ</span> L
</p>
<p>Satırını sağlamış olduk. Buradan doğruluğunu bulduğumuz L önermesinin komşularını 1 azaltıyoruz:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz5.png" alt=""/>
	</p>
<p>L&#8217;nin komşularının 1 azalması sonucunda M&#8217;nin değeri 0&#8242;a inmişi oluyor ve artık M için de doğru diyebiliyoruz. Şimdi M&#8217;nin komşularını 1 azaltalım:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz6.png" alt=""/>
	</p>
<p>Artık P için doğru sonucuna ulaştık ve P&#8217;nin iki komşusununda değerini 1 azaltarak sonucu buluyoruz:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz7.png" alt=""/>
	</p>
<p>Görüldüğü üzere zaten doğru olduğunu bildiğimiz L için tekrar doğru sonucunu bulduk ve ilave olarak Q için de doğru sonucunu bulduk.
</p>
<p>Demek ki ilk  sistem bize verildiğinde, Q&#8217;nun değeri sorulsaydı, doğru olduğunu söyleyebilirdik, ancak bunu bilgisayarın bulması için yukarıda adım adım anlatılan aşamaların tamamlanması gerekmektedir.
</p>
<p><strong>Geri Zincirleme (Backward Chaining)<br />
</strong></p>
<p>Gelelim aynı amaç için kullanılan, yani bir mantıksal sistemi çözmek için kullanılan geri zincirleme yöntemine. İleri zincirleme yöntemine çok benzer olarak yine bir mantıksal sistem, bir şekil üzerinde gösterilebilr:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz8.png" alt=""/>
	</p>
<p>Sistemde diyelim ki Q&#8217;nun değerini merak ediyor olalım. Bilgisayar algoritması, bu defa Q&#8217;nun değerinin doğruluğunun P&#8217;nin değerinin doğruluğuna bağlı olduğunu çözerek işe başlayacaktır. Aslında geri zincirlemede kullanılan yaklaşım, tam olarak ileri zincirlemenin tersidir. İleri zincirlemede, doğruluğunu bildiğimiz önermelerden başlanırken, geri zincirlemede, doğruluğunu aradığımız önermelerden başlıyoruz. Burada doğruluğunu aradığımız önerme Q olduğuna göre, Q&#8217;dan başlayarak sistemi dolaşacağız. İlk adımda Q&#8217;nun doğruluğu, P&#8217;nin doğruluğuna bağlıdır, o halde Q yerine P doğru mudur diye sistemi çözmeye çalışırız:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz9.png" alt=""/>
	</p>
<p>P&#8217;nin doğruluğu, şekilde de görüldüğü üzere, L ve M&#8217;ye bağlıdır ve artık L ve M doğru mudur diye sorarız. Bunlardan birisinin yanlış olması halinde sonuç yanlış veya ikisinin de doğru olması halinde sonuç doğru olacaktır. Burada sonuç ile kastedilen P ve dolayısıyla Q&#8217;dur. Dikkat edilirse artık L ve M&#8217;ye bakarak Q&#8217;nun değerini tahmin edebiliyoruz. Devam edelim:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz10.png" alt=""/>
	</p>
<p>L&#8217;nin doğruluğuna bakıldığında P ve A bulunmakta, aslında bu sorunun cevabını P&#8217;nin değerini bilmediğimiz için veremeyiz. Ancak burada bir tehlike bizi bekliyor, şayet doğruluğunu araştırmak için DFS (depth first search, derin öncelikli arama) benzeri bir algoritma ile ağacı (veya şekli (graph) ) dolaşıyorsak, bu durumda bir sonsuz döngüye (fasit daire) girme ihtimalimiz bulunuyor. Bunu engellemek için diyelim ki derinliği sabitledik ve L&#8217;nin doğruluğu için A ve B ikilisine bakmaya karar verdik:
</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/011512_2311_lerivegeriz11.png" alt=""/>
	</p>
<p>Sonuçta A ve B doğru ise L doğru demektir. O halde L doğru mu sorusunu sormayı bırakıyor ve M doğrumu A ve B doğru mu sorularını arayarak sistemi çözmeye devam ediyoruz. M&#8217;nin doğruluğu ise L ve B&#8217;ye dayanmakta, o halde bir kere daha L&#8217;nin doğruluğunu sorguluyor ve yukarıda anlatıldığı üzere bir kere daha A ve B&#8217;nin doğruluğunu sorguluyoruz. Neticede sorumuz basitçe A ve B doğru mudur şeklinde oluyor.
</p>
<p>Verilen mantıksal sistemden de bildiğimiz üzere A ve B doğrudur, o halde Q da doğrudur diyebiliriz, çünkü sistemi buraya kadar adım adım çözdük ve neticede Q&#8217;nun doğruluğunu sorgulamanın A ve B&#8217;nin doğruluğunu sorgulamak olduğunu gördük.
</p>
<p>Geri zincirleme (backward chaining) yaklaşımında istenirse buradan geriye dönülerek bütün sistemdeki önermelerin durumları doğru veya yanlış olarak işaretlenebilir. Ancak geri zincirleme algoritması, bu aşamada aranan Q önermesinin sonucunu bularak durabilir de. Bu iki yaklaşım arasındaki fark aslında CPS (call by passing style) ile birikimsel tarz (accumulation style) arasındaki fark gibidir.
</p>
<p>İki yöntemde de sonuç doğru bir şekilde bulunur. Belki ufak bir fark olarak dikkat edilmesi gereken, geri zincirlemede, özel olarak aranan bir önermenin sonucuna konsantre olmamız, buna bağlı olarak da bazı büyük sistemlerde, sistemin sadece belirli bir kısmını çözüyor olmamız görülebilir. Buna mukabil, ileri zincirleme yaklaşımında, sistemin tamamı çözülmektedir.</p>

<p class="sayac_bilgi">40 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2012/01/16/ileri-ve-geri-zincirleme-forward-and-backward-chaining-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CDMA (code division multiple access)</title>
		<link>http://www.bilgisayarkavramlari.com/2011/11/09/cdma-code-division-multiple-access/</link>
		<comments>http://www.bilgisayarkavramlari.com/2011/11/09/cdma-code-division-multiple-access/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 03:42:47 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[Network(Ağ)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=6012</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, özellikle ağ (network) konusunda geçen ve bir ortamı, birden fazla veri kanalının iletişimi için kullanılan yöntemlerden birisidir. Literatürde sıkça geçen diğer çok kanallı veri iletişim yöntemleri, TDMA (time division multiple access , zaman paylaşımlı çoklu erişim) ve FDMA (frequency division multiple access, frekans paylaşımlı çoklu erişim) yöntemleridir. CDMA [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinde, özellikle ağ (network) konusunda geçen ve bir ortamı, birden fazla veri kanalının iletişimi için kullanılan yöntemlerden birisidir. Literatürde sıkça geçen diğer çok kanallı veri iletişim yöntemleri, <a href="http://www.bilgisayarkavramlari.com/2007/12/16/zaman-bolmeli-coklama-time-division-multiplexing-tdm/">TDMA (time division multiple access , zaman paylaşımlı çoklu erişim)</a> ve <a href="http://www.bilgisayarkavramlari.com/2007/12/16/frekans-bolmeli-coklama-siklik-bolmeli-coklayici-frequency-division-multiplexing-fdm/">FDMA (frequency division multiple access, frekans paylaşımlı çoklu erişim)</a> yöntemleridir.</p>
<p>CDMA yöntemini bu diğer meşhur iki yöntem ile karşılaştırmak için genelde şu şekilde bir örnek verilir. Örneğin bir odada birden çok kişinin konuşarak haberleştiğini düşünelim. TDM yaklaşımında, kişiler sırayla ve teker teker konuşmakta, ilgili alıcı konuşan kişinin mesajını almaktadır. FDM yaklaşımında, kişiler farklı ses tonları ile konuşmakta ve dolayısıyla alıcı olan kişi, ilgili ses tonuna dikkatini vererek iletilen mesajı almaktadır. CDMA yaklaşımında ise, kişiler farklı lisanlarda konuşmakta, dolayısıyla o lisanı bilen kişiler tarafından algılanmakta, diğer kişiler tarafından iletilen veri gürültü olarak algılanıp dikkate alınmamaktadır.</p>
<p><strong>Örnek</strong></p>
<p>Konuyu bir örnek üzerinden açıklamaya çalışalım. Örneğin 4 farklı veri kanalı üzerinden veri akmakta olsun ve bunları CDMA yöntemi ile tek bir kanaldan taşımak isteyelim.</p>
<ul>
<li>V1: 1101</li>
<li>V2: 0010</li>
<li>V3: 1010</li>
<li>V4: 0011</li>
</ul>
<p>&nbsp;</p>
<p>Yukarıdaki şekilde verilen 4 farklı verinin CDMA ile nasıl taşındığını anlatalım. Verileri ilk adımda farklı frekans değerine sahip işaretler ile kodluyoruz (code). Örneğimizde kullanacağımız 4 farklı kodumuz aşağıdaki şekilde olsun:</p>
<ul>
<li>K1: 1111</li>
<li>K2: 1010</li>
<li>K3: 1100</li>
<li>K4: 1001</li>
</ul>
<p>Verilerin, kodlar tarafından işlenebilmesi için ve 4 farklı verimiz olduğu için, verilerin genliğini 4 misli şeklinde düünebiliriz. Buna göre örnek olarak son veri için kodlamayı anlatalım:</p>
<p>V4 : 0000 0000 1111 1111 (Gösterim için 0011 verisinin her elemanını 4 kere tekrarladım.)</p>
<p>K(V4,K4) : 0110 0110 1001 1001 (V4&#8242;ün, K4 ile kodlanması sonucunda, V4 üzerindeki 1 değerleri için K4&#8242;ün kendisi, V4 üzerindeki 0 değerleri için ise K4&#8242;ün tersi gelmektedir. Daha basit anlamda her V4 dörtlüsü (uzun şekilde yazılmış halini düşünün) ile K4 değerlerinin <a href="http://www.bilgisayarkavramlari.com/2008/03/13/ozel-veya-exclusive-or-farklilik-operatoru/">özel veyasının (XOR) </a>tersi alınır !(( 0000 0000 1111 1111 ) XOR ( 1001 1001 1001 1001)) şeklinde)</p>
<p>Sonuçta 4 farklı veri ve 4 farklı kodlama için aşağıdaki sonuçlara ulaşılır:</p>
<ul>
<li>K(V1,K1) : 1111 1111 0000 1111</li>
<li>K(V2,K2) : 0101 0101 1010 0101</li>
<li>K(V3,K3) : 1100 0011 1100 0011</li>
<li>K(V4,K4) : 0110 0110 1001 1001</li>
</ul>
<p>CDMA algoritmamızda, son adım olarak yukarıdaki değerleri topluyoruz. Toplamın ve yukarıdaki işlemlerin görsel olarak ifadesi aşağıdaki şekildedir:</p>
<p><img title="cdmailk.png" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/cdmailk.png" alt="Cdmailk" width="600" height="218" border="0" /></p>
<p>Yukarıdaki toplama işlemi sonucunda elde edilen verilerin, her birisinin farklı alıcılar tarafından alınmak istediğini düşünelim. Bu durumda her alıcı, almak istediği göndericinin kodlama değerini kendisinde ayarlayacak ve yukarıda elde edilen sonuç verisini kendisinde işleyecektir. Bu durum aşağıdaki şekilde gösterilmektedir:</p>
<p><img title="cdmaiki.png" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/cdmaiki.png" alt="Cdmaiki" width="600" height="315" border="0" /></p>
<p>Yukarıda görüldüğü üzere her kodlama değeri sonucunda açılan veri, orjinal olarak kodlanan ilgili veridir. Örneğin K1 kodlamasndan açılan veri V1 olarak bulunmuştur. Bu işlem diğer kodlamaları engellememektedir.</p>
<p>&nbsp;</p>
<p>CDMA yöntemi, günümüzde de kullanılan UMTS teknolojisinin temelini oluşturur. UMTS (universal mobile telecommunication system, evrensel hareketli telekomunikasyon sistemi) teknolojisi, CDMA2000 teknolojisinden sonra (IMT Multi Carrier, inter mobile telecommunications, hareketli telekomunicakasyonlar arası çoklu taşıyıcı olarak da bilinir) geliştirilen ve CDMA 2000 teknolojisi ile rekabeti amaçlayan bir teknolojidir. CDMA2000 de, UMTS&#8217;in temeli olan W-CDMA de birer 3G teknolojisidir ve cep telefonlarının aynı anda iletişimi için kullanılmaktadır.</p>

<p class="sayac_bilgi">223 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2011/11/09/cdma-code-division-multiple-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kuantum Kapıları (Quantum Gates)</title>
		<link>http://www.bilgisayarkavramlari.com/2010/10/14/kuantum-kapilari-quantum-gates/</link>
		<comments>http://www.bilgisayarkavramlari.com/2010/10/14/kuantum-kapilari-quantum-gates/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 08:41:35 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Kuantum Hesaplama]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[hadamard]]></category>
		<category><![CDATA[pauli gates]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2010/10/14/kuantum-kapilari-quantum-gates/</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Kuantum kapıları, mantıksal devre tasarımında bulunan klasik kapılara alternatiftir. Amaç, elektronik devrelerin karar mekanizmasında quantum teknolojisini kullanmaktır. Klasik kapılarda bulunan ve bitlere göre karar vermeye yarayan mekanizmadan farklı olarak kuantum kapılarında, kubitler (qubits) üzerinden karar verilir. Kuantum kapılarının bir özelliği, geri döndürülebilir olmalarıdır (reversible), yani bir girdi için elde edilen [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Kuantum kapıları, mantıksal devre tasarımında bulunan klasik kapılara alternatiftir. Amaç, elektronik devrelerin karar mekanizmasında quantum teknolojisini kullanmaktır.</p>
<p>Klasik kapılarda bulunan ve bitlere göre karar vermeye yarayan mekanizmadan farklı olarak kuantum kapılarında, <a href="http://www.bilgisayarkavramlari.com/2008/10/02/kubit-qubit/">kubitler (qubits)</a> üzerinden karar verilir. Kuantum kapılarının bir özelliği, geri döndürülebilir olmalarıdır (reversible), yani bir girdi için elde edilen sonuç, sonuçtan girdi olarak verildiğinde, girdi geri elde edilebilir.</p>
<p>Bir mantıksal kapının geri döndürülebilir olması, kapının girdisinden elde edilen çıktının tekrar girdi olması halinde, ilk girdinin geri elde edilebilmesidir. Bu karmaşık cümle ile anlatılmak istenen örneğin L kapısı için L(x) = y gibi bir sonuç alınıyorsa, bu kapının tersi olan L&#8217; için L&#8217;(y) = x sonucunun alınması beklenir. Veya kapının kendisinin ters olması halinde de L(x) = y ve L(y) = x şartlarının aynı anda sağlanması beklenir.</p>
<p>Örneğin klasik değil kapısı (not gate) geri döndürülebilir kapıdır (reversable). Bunu <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesine (truth table)</a> bakarak kolayca görebiliriz.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 85px;"></col>
<col style="width: 76px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">Girdi</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">Çıktı</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
</tbody>
</table>
</div>
<p>Görüldüğü üzere L(1) = 0 ve L(0)=1 olmakta, dolayısıyla tersi alınabilir bir kapı olmaktadır.</p>
<p>Buna karşılık, geri döndürülebilirlik (reversible) konusunun daha iyi anlaşılabilmesi için, geri döndürülemez bir kapı olan veya kapısını inceleyelim.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 66px;"></col>
<col style="width: 66px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">Girdi</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">Çıktı</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">00</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">01</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">10</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">11</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
</tbody>
</table>
</div>
<p>Yukarıdaki <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesinde (truth table)</a> görüldüğü üzere, herhangi bir çıktının, girdiye verilmesi durumunda, girdinin geri elde edilmesi mümkün değildir. Örneğin L(10) = 1 olmakta ama L(1) = 10 olmamaktadır.</p>
<p>Aynı zamanda herhangi bir L&#8217; devresi de yukarıdaki tablonun tersini üretemez. Bunun sebebi, 1 çıktısının 01, 10 veya 11 şeklinde geri döndürülme ihtimali olduğu ve 1 çıktısı alındıktan sonra, orijinal girdinin ne olduğunun tahmininin imkânsız olduğudur.</p>
<p>Ve kapısı örneğini ele alarak, bir kapının geri döndürülebilir olması için giriş ve çıkış bitlerinin sayısının aynı olması gerektiğini tahmin edebilirsiniz. Aslında bu durum basitçe <a href="http://www.bilgisayarkavramlari.com/2009/12/10/guvercin-yuvasi-kaidesi-pigeonhole-principle/">güvercin yuvası kaidesi (pigeonholde principle)</a> ile açıklanabilir ve evet bir kapının geri döndürülebilir olması için giriş biti sayısı ile çıkış biti sayısı eşit olmalıdır.</p>
<p>Şayet giriş bitlerinin sayısı ile çıkış bitlerinin sayısı eşit ise, kapının karakterini, yukarıdaki örneklerde olduğu gibi doğruluk çizelgesi (truth table) şeklinde klasik gösterimden farklı olarak gösterebiliriz. Aslında kuantum kapıları (quantum Gates) için vaz geçilmez olan bu gösterim matris gösterimidir.</p>
<p>Örneğin <a href="http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/">değil kapısını (not gate)</a> ele alalım ve matriste göstermeye çalışalım.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 28px;"></col>
<col style="width: 22px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki matris, okunması kolay olsun diye bir satır (en üstteki) ve bir sütun (en soldaki) eklenerek verilmiştir. Bu matriste, satırlar, girdiyi, sütunlar ise çıktıyı tutmaktadır. Yani tablomuzu aşağıdaki şekilde yorumlayabiliriz</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 139px;"></col>
<col style="width: 132px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 1 çıktısı alınabilir mi?</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 1 çıktısı alınabilir mi?</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki bu sorulara evet veya hayır cevaplarını vererek evet için 1 ve hayır için 0 yerleştiriyoruz. Örneğin değil kapısı (not gate) 0 için 1 sonucu verir ve 0 için 0 sonucu vermez. Dolayısıyla yukarıdaki doğruluk çizelgesinin matris gösterimini aşağıdaki şekilde yapmak yeterlidir.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 28px;"></col>
<col style="width: 28px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki bu matrise bakıldığı zaman, bu matrisin <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesi (truth table)</a> kolaylıkla anlaşılabilir.</p>
<p>Matris gösteriminin kuantum kapıları için kullanılması durumunda, aslında qubit değerlerinin matrise yerleştirilmesinden bahsediliyor demektir.</p>
<p>Örneğin, α|0&gt; + β|1&gt; şeklinde yazılan bir kubit gösterimini vektör olarak modellemek istersek</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 28px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">α</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">β</td>
</tr>
</tbody>
</table>
<p>Şeklinde bir vektör elde edebiliriz. Bu vektörü değil kapısı (not gate) için girdi ve çıktı olarak modellediğimizde, bir qubit için durum aşağıdaki şekilde olur:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl1.png" alt="" /></p>
<p>Görüldüğü üzere, kubitin tersi alınmıştır. Burada dikkat edilecek bir husus, matriste kullanılan α ve β değerlerinin karmaşık sayılar (complex numbers) olduğudur.</p>
<p>Kuantum Kapılarının bir özelliği, bu kapılarda kullanılan matrisin<a href="http://www.bilgisayarkavramlari.com/2008/12/29/uniter-matris-vahid-masfuf-unitary-matrix/">, vahid masfuf (uniter matrix)</a> olmasıdır.</p>
<p><strong>Çok Kullanılan Kuantum Kapıları<br />
</strong></p>
<p>Bu bölümde, kuantum kapılarından çok kullanılanlarını anlatacağız. Teorik olarak sonsuz sayıda kuantum kapısı üretilebilir. Ancak buradaki amaç özellikleri bakımından önemli görülen ve literatürde sıkça rastlananları açıklamaktır.</p>
<p><strong>Hadamard Kapısı<br />
</strong></p>
<p>Hadamard kapıları, tek kubitli bir sistemde, aşağıdaki dönüşümleri yaparlar.</p>
<p>|0&gt; değerini <img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl2.png" alt="" /> olarak</p>
<p>|1&gt; değerini ise <img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl3.png" alt="" /> olarak dönüştürür.</p>
<p>Bu durumda, hadamard kapısının matrisi aşağıdaki şekilde olacaktır:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl4.png" alt="" /></p>
<p>Hadamard kapılarının ismi, bu kapılar için kullanılan matrisin bir <a href="http://www.bilgisayarkavramlari.com/2010/10/14/hadamard-matrisi/">hadamard matrisi (hadamard matrix)</a> olmasından gelmektedir.</p>
<p>Aslında hadamard matrislerini, <a href="http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/">değil kapılrının (not gate)</a> karekökü olarak düşünmek de mümkündür. Görüldüğü üzere, elde edilen sonuç bir <a href="http://www.bilgisayarkavramlari.com/2008/12/29/uniter-matris-vahid-masfuf-unitary-matrix/">vahid masfuftur (uniter matrix)</a></p>
<p><strong>Pauli X kapısı<br />
</strong></p>
<p>Pauli X kapıları, kalsik değil kapısının (not gate), kuantum için uyarlanmış halidir. Yani yazının başında anlatılan ve girişi tersine döndürmeye yarayan kapılar olarak düşünülebilir. Bu durumda matrisi aşağıdaki şekilde olacaktır.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl5.png" alt="" /><strong><br />
</strong></p>
<p>Aslında bu kapının özelliği <a href="http://www.bilgisayarkavramlari.com/2010/10/14/bloch-kuresi-bloch-sphere/">Bloch Küresini (Bloch Sphere) </a> X ekseni etrafında pi radyan kadar döndürmesi ve |0&gt; değerini |1&gt; ve |1&gt; değerini |0&gt; yapmasıdır.</p>
<p><strong>Pauli Y kapısı<br />
</strong></p>
<p>Pauli X kapısına benzer olarak bu kapı da <a href="http://www.bilgisayarkavramlari.com/2010/10/14/bloch-kuresi-bloch-sphere/">Bloch Küresi (Bloch Sphere)</a> üzerinde döndürme işlemi yapmaktadır. Ancak bir önceki kapıdan farklı olarak bu defa Y ekseni üzerinde döndürme işlemi yapılır.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl6.png" alt="" /><strong><br />
</strong></p>
<p><strong>Pauli Z kapısı<br />
</strong></p>
<p>Pauli X ve Y kapılarına benzer şekilde <a href="http://www.bilgisayarkavramlari.com/2010/10/14/bloch-kuresi-bloch-sphere/">Bloch Küresi</a> üzerinde döndürme işlemi yapılır. Bu defa isminden de anlaşılacağı üzere döndürme işlemi Z ekseni üzerinde olur.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl7.png" alt="" /><strong><br />
</strong></p>
<p><strong>Faz kaydırma kapısı (Phase shift gate)<br />
</strong></p>
<p>Bu kapının özelliği, 00, 01 ve 10 için değişiklik yapmamak ama 11 durumu için |1&gt; girdisinin e<sup>i ϴ</sup>|1&gt; girdisine dönüştürmesidir. Yani |1&gt; için, ϴ derece döndürme işlemi yapılmaktadır.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0841_KuantumKapl8.png" alt="" /></p>

<p class="sayac_bilgi">263 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2010/10/14/kuantum-kapilari-quantum-gates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Değil Kapısı (not gate)</title>
		<link>http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/</link>
		<comments>http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 07:49:37 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Mantıksal devre tasarımında kullanılan bir kapı örneğidir. Basitçe bir değerin tersini almaya yarar. Değil kapısının doğruluk çizelgesine (truth table) aşağıdaki şekildedir Girdi Çıktı 1 0 0 1 Görüldüğü üzere L(1) = 0 ve L(0)=1 olmakta, dolayısıyla giren değerin tersi döndürülmektedir. Ayrıca yukarıdaki doğruluk çizelgesini matriste gösterebiliriz: 0 1 0 0 [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Mantıksal devre tasarımında kullanılan bir kapı örneğidir. Basitçe bir değerin tersini almaya yarar.</p>
<p>Değil kapısının <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesine (truth table)</a> aşağıdaki şekildedir</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 85px;"></col>
<col style="width: 76px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">Girdi</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">Çıktı</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
</tbody>
</table>
</div>
<p>Görüldüğü üzere L(1) = 0 ve L(0)=1 olmakta, dolayısıyla giren değerin tersi döndürülmektedir.</p>
<p>Ayrıca yukarıdaki doğruluk çizelgesini matriste gösterebiliriz:</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 28px;"></col>
<col style="width: 22px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki matris, okunması kolay olsun diye bir satır (en üstteki) ve bir sütun (en soldaki) eklenerek verilmiştir. Bu matriste, satırlar, girdiyi, sütunlar ise çıktıyı tutmaktadır. Yani tablomuzu aşağıdaki şekilde yorumlayabiliriz</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 139px;"></col>
<col style="width: 132px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 1 çıktısı alınabilir mi?</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 1 çıktısı alınabilir mi?</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki bu sorulara evet veya hayır cevaplarını vererek evet için 1 ve hayır için 0 yerleştiriyoruz. Örneğin değil kapısı (not gate) 0 için 1 sonucu verir ve 0 için 0 sonucu vermez. Dolayısıyla yukarıdaki doğruluk çizelgesinin matris gösterimini aşağıdaki şekilde yapmak yeterlidir.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 28px;"></col>
<col style="width: 28px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıda görüldüğü üzere 0 ve 1&#8242;lerden sanki bir çarpı veya X harfi üretilmiş gibidir. Bu özelliğinden dolayı, bazı kaynaklarda, değil kapılarına, X kapısı (Xgate) ismi de verilir.</p>
<p>Değil kapısının mantıksal devre tasarımındaki gösterimi bir üçgen ve daireden oluşmaktadır.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101410_0749_DeilKapsn1.png" alt="" /></p>
<p>Yukarıdaki şekilde görüldüğü gibi bir devre yerleştirilerek ifade edilir ve burada F= A&#8217; şeklinde A&#8217;nın tersi alınmaktadır.</p>
<p>Devre tasarımı sırasında IC 7404 (Integrated Circuit, Entegre devre Standardı) kullanılabilir. Bu devreye altılı ters çevirici anlamında Hex Inverter ismi verilmektedir ve devrenin içerisinde 6 adet değil kapısı bulunur.</p>
<p><a href="http://www.bilgisayarkavramlari.com/wp-content/uploads/7404.png"><img class="alignnone size-full wp-image-4665" title="7404" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/7404.png" alt="" width="251" height="183" /></a></p>
<p>Devrenin, yukarıda görüldüğü üzere 14 adet bacağı bulunur ve yukarıdaki şemada gösterildiği üzre, giriş ve çıkış ayakları işaretlenmiştir.</p>
<p>Devrenin, 14. bacağı, pozitif besleme alırken, 7. bacak topraklamadır.</p>

<p class="sayac_bilgi">385 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toffoli Kapısı (Toffoli Gate)</title>
		<link>http://www.bilgisayarkavramlari.com/2010/10/13/toffoli-kapisi-toffoli-gate/</link>
		<comments>http://www.bilgisayarkavramlari.com/2010/10/13/toffoli-kapisi-toffoli-gate/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 10:38:46 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Kuantum Hesaplama]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[ccnot]]></category>
		<category><![CDATA[kuantum]]></category>
		<category><![CDATA[toffoli]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2010/10/13/toffoli-kapisi-toffoli-gate/</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar mühendisliğinin de bir çalışma alanı olan mantıksal devre tasarımı konusunda geçen, ve mucidinin adı ile anılan bir kapı örneğidir. Bu kapının en büyük özelliği evrensel olarak geri döndürülebilir olmasıdır (universally reversable). Literatürde bu kapı için CCNOT (control control not) kapısı ismi de verilmektedir. Bir mantıksal kapının geri döndürülebilir olması, [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar mühendisliğinin de bir çalışma alanı olan mantıksal devre tasarımı konusunda geçen, ve mucidinin adı ile anılan bir kapı örneğidir. Bu kapının en büyük özelliği evrensel olarak geri döndürülebilir olmasıdır (universally reversable). Literatürde bu kapı için CCNOT (control control not) kapısı ismi de verilmektedir.</p>
<p>Bir mantıksal kapının geri döndürülebilir olması, kapının girdisinden elde edilen çıktının tekrar girdi olması halinde, ilk girdinin geri elde edilebilmesidir. Bu karmaşık cümle ile anlatılmak istenen örneğin L kapısı için L(x) = y gibi bir sonuç alınıyorsa, bu kapının tersi olan L&#8217; için L&#8217;(y) = x sonucunun alınması beklenir. Veya kapının kendisinin ters olması halinde de L(x) = y ve L(y) = x şartlarının aynı anda sağlanması beklenir.</p>
<p>Örneğin klasik <a href="http://www.bilgisayarkavramlari.com/2010/10/14/degil-kapisi-not-gate/">değil kapısı (not gate)</a> geri döndürülebilir kapıdır (reversable). Bunu <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesine (truth table)</a> bakarak kolayca görebiliriz.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 85px;"></col>
<col style="width: 76px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">Girdi</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">Çıktı</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
</tbody>
</table>
</div>
<p>Görüldüğü üzere L(1) = 0 ve L(0)=1 olmakta, dolayısıyla tersi alınabilir bir kapı olmaktadır.</p>
<p>Buna karşılık, geri döndürülebilirlik (reversible) konusunun daha iyi anlaşılabilmesi için, geri döndürülemez bir kapı olan veya kapısını inceleyelim.</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 66px;"></col>
<col style="width: 66px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">Girdi</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">Çıktı</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">00</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">01</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">10</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">11</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
</tbody>
</table>
</div>
<p>Yukarıdaki <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesinde (truth table)</a> görüldüğü üzere, herhangi bir çıktının, girdiye verilmesi durumunda, girdinin geri elde edilmesi mümkün değildir. Örneğin L(10) = 1 olmakta ama L(1) = 10 olmamaktadır.</p>
<p>Aynı zamanda herhangi bir L&#8217; devresi de yukarıdaki tablonun tersini üretemez. Bunun sebebi, 1 çıktısının 01, 10 veya 11 şeklinde geri döndürülme ihtimali olduğu ve 1 çıktısı alındıktan sonra, orijinal girdinin ne olduğunun tahmininin imkânsız olduğudur.</p>
<p>Ve kapısı örneğini ele alarak, bir kapının geri döndürülebilir olması için giriş ve çıkış bitlerinin sayısının aynı olması gerektiğini tahmin edebilirsiniz. Aslında bu durum basitçe <a href="http://www.bilgisayarkavramlari.com/2009/12/10/guvercin-yuvasi-kaidesi-pigeonhole-principle/">güvercin yuvası kaidesi (pigeonholde principle)</a> ile açıklanabilir ve evet bir kapının geri döndürülebilir olması için giriş biti sayısı ile çıkış biti sayısı eşit olmalıdır.</p>
<p>Şayet giriş bitlerinin sayısı ile çıkış bitlerinin sayısı eşit ise, kapının karakterini, yukarıdaki örneklerde olduğu gibi doğruluk çizelgesi (truth table) şeklinde klasik gösterimden farklı olarak gösterebiliriz. Aslında kuantum kapıları (quantum Gates) için vaz geçilmez olan bu gösterim matris gösterimidir.</p>
<p>Örneğin değil kapısını (not gate) ele alalım ve matriste göstermeye çalışalım.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 28px;"></col>
<col style="width: 22px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki matris, okunması kolay olsun diye bir satır (en üstteki) ve bir sütun (en soldaki) eklenerek verilmiştir. Bu matriste, satırlar, girdiyi, sütunlar ise çıktıyı tutmaktadır. Yani tablomuzu aşağıdaki şekilde yorumlayabiliriz</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 139px;"></col>
<col style="width: 132px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;"></td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0 girdisi için, 1 çıktısı alınabilir mi?</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 0 çıktısı alınabilir mi?</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1 girdisi için 1 çıktısı alınabilir mi?</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki bu sorulara evet veya hayır cevaplarını vererek evet için 1 ve hayır için 0 yerleştiriyoruz. Örneğin değil kapısı (not gate) 0 için 1 sonucu verir ve 0 için 0 sonucu vermez. Dolayısıyla yukarıdaki doğruluk çizelgesinin matris gösterimini aşağıdaki şekilde yapmak yeterlidir.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 28px;"></col>
<col style="width: 28px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">0</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">1</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">0</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki bu matrise bakıldığı zaman, bu matrisin <a href="http://bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesi (truth table)</a> kolaylıkla anlaşılabilir.</p>
<p>Toffoli kapısına gelince, bu kapının doğruluk tablosu ve matrisi aşağıda verilmiştir.</p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 22px;"></col>
<col style="width: 21px;"></col>
<col style="width: 21px;"></col>
<col style="width: 21px;"></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: solid 0.5pt; padding: 1px;" colspan="2" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"><strong>Girdi</strong></span></p>
</td>
<td style="border-left: none; padding: 1px;" colspan="2" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"><strong>Çıktı</strong></span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Times New Roman; font-size: 12pt;">Yukarıdaki doğruluk çizelgesinin matris hali de aşağıda verilmiştir.<br />
</span></p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101310_1038_ToffoliKaps1.png" alt="" /><span style="font-family: Times New Roman; font-size: 12pt;"><br />
</span></p>
<p><span style="font-family: Times New Roman; font-size: 12pt;">Görüldüğü üzere, toffoli kapısı, <a href="http://www.bilgisayarkavramlari.com/2008/03/13/ozel-veya-exclusive-or-farklilik-operatoru/">özel veya (XOR)</a> şeklinde çalışmaktadır ve ilk biti kontrol bitidir. Yani çıktının ikinci biti (doğruluk çizelgesindeki sağdaki bit), XOR sonucu iken, ilk bit Girdinin ilk biti ile aynıdır.<br />
</span></p>
<p><span style="font-family: Times New Roman; font-size: 12pt;">İki girdi için yukarıda verilen doğruluk çizelgesi ve matris gösterimlerinin, 3 giriş için olanı da aşağıdadır.<br />
</span></p>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 21px;"></col>
<col style="width: 20px;"></col>
<col style="width: 21px;"></col>
<col style="width: 21px;"></col>
<col style="width: 20px;"></col>
<col style="width: 21px;"></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: solid 0.5pt; padding: 1px;" colspan="3" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;"><strong>Giriş</strong></span></td>
<td style="border-left: none; padding: 1px;" colspan="3" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"><strong>Çıkış</strong></span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;"> 0 </span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
</tr>
<tr>
<td style="padding: 1px;" valign="middle"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-right: solid 0.5pt; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="border-left: none; padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">1</span></p>
</td>
<td style="padding: 1px;" valign="middle">
<p style="text-align: center;"><span style="font-family: Times New Roman; font-size: 12pt;">0</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family: Times New Roman; font-size: 12pt;">Böylelikle, yukarıdaki 3 bit girişin aslında tek bit olan çıkışının başında iki bitlik kontrol bulunmakta ve yazının başında bahsettiğimiz CCNOT yani kontrol kontrol değil (not) kapısı olmaktadır. Bu tablonun matris gösterimi aşağıdaki şekildedir.<br />
</span></p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101310_1038_ToffoliKaps2.png" alt="" /></p>

<p class="sayac_bilgi">149 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2010/10/13/toffoli-kapisi-toffoli-gate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LFSR (Linear Feedback Shift Register)</title>
		<link>http://www.bilgisayarkavramlari.com/2010/05/19/lfsr-linear-feedback-shift-register/</link>
		<comments>http://www.bilgisayarkavramlari.com/2010/05/19/lfsr-linear-feedback-shift-register/#comments</comments>
		<pubDate>Tue, 18 May 2010 22:24:48 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[Veri Güvenliği(Cryptography)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2010/05/19/lfsr-linear-feedback-shift-register/</guid>
		<description><![CDATA[Yazan :Şadi Evren ŞEKER Bilgisayar bilimlerinde, özellikle şifreleme ve veri güvenliği konularında doğrusal ahenk sınıfı (linear congruence ) üretmek için kullanılan yöntemin ismidir. İngilizcedeki linear feedback shift register terimini Türkçede doğrusal geri beslemeli kaydırma yazmacı olarak tercüme etmek mümkündür. Bu yöntem genellikle ikili tabandaki sayılar üzerinden çalışır ve sistem iki adımdan oluşur : Mevcut sayılar [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan  :Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinde, özellikle şifreleme ve veri güvenliği konularında <a href="http://www.bilgisayarkavramlari.com/2008/11/13/dogrusal-ahend-linear-congruence/">doğrusal ahenk sınıfı (linear congruence )</a> üretmek için kullanılan yöntemin ismidir. İngilizcedeki linear feedback shift register terimini Türkçede doğrusal geri beslemeli kaydırma yazmacı olarak tercüme etmek mümkündür. Bu yöntem genellikle ikili tabandaki sayılar üzerinden çalışır ve sistem iki adımdan oluşur :</p>
<ol>
<li>Mevcut sayılar üzerinden yeni bir sayı üreten fonksiyonun çalışması</li>
<li>Mevcut sayıların kaydırılması (shift) ve açılan boşluğa bir önceki adımda elde edilen fonksiyon sonucunun yerleştirilmesi.</li>
<li>1. Adımdan tekrar devam edilerek bir sonraki sayının üretilmesi.</li>
</ol>
<p>Yukarıdaki bu adımları bir örnek üzerinden anlamaya çalışalım. Örneğin sayılarımız 4 bitten oluşsun.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/051810_2224_LFSRLinearF1.png" alt="" /></p>
<p>Kullanacağımız fonksiyonu F = C ⊕ D olarak tanımlı olsun.</p>
<p>Bu durumda her adımda aşağıdaki şekilde kaydırma işlemi yapılacaktır:</p>
<p>F = C ⊕ D</p>
<p>D = C</p>
<p>C = B</p>
<p>B = A</p>
<p>A = F</p>
<p>Görüldüğü üzere her adımda bütün bitler birer kere sağa kaydırılmış açılan boşluğa, bir önceki adımda olan C ve D bitlerinin değerleri yerleştirilmiştir.</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/051810_2224_LFSRLinearF3.png" alt="" /></p>
<p>Yukarıdaki bu çizimden de anlaşılacağı üzere 4 bitlik bilginin son 2 biti fonksiyona sokulmuş (buradaki fonksiyon <a href="http://www.bilgisayarkavramlari.com/2008/03/13/ozel-veya-exclusive-or-farklilik-operatoru/">yahut fonksiyonu (özel veya (exclusive or))</a> olarak tanımlıdır) ve çıkan sonuç, kaydırma işleminden doğan boşluğa konulmuştur.</p>
<p>Yukarıdaki bu örneği aşağıdaki örnek sayılar için çalıştıralım. Örneğin LFSR&#8217;yi 1111 bilgisi ile besleyerek başlayalım:</p>
<p>1111 (son iki bit 1⊕1 = 0)</p>
<p>0111 (başa 0 eklendi yine son iki bit 1⊕1 = 0 )</p>
<p>0011 (başa yine 0 eklendi yine son iki bit 1⊕1 = 0)</p>
<p>0001 (başa yine 0 eklendi son iki bit 0⊕1 = 1)</p>
<p>1000 (başa 1 eklendi son iki bit 0⊕0 = 0)</p>
<p>0100</p>
<p>0010</p>
<p>1001</p>
<p>1100</p>
<p>0110</p>
<p>1011</p>
<p>0101</p>
<p>1010</p>
<p>1101</p>
<p>1110</p>
<p>1111</p>
<p>Yukarıdaki son adımda, başlangıçta yazmacı (register) beslerken kullandığımız ilk değeri geri elde ettik. Bu anlamda yukarıdaki sayılardan da anlaşılacağı üzere elde edilen sayılar <a href="http://www.bilgisayarkavramlari.com/2008/04/30/dairesel-grup-cyclic-group/">dairesel bir grup oluşturur ( cyclic group)</a> ve şifreleme algoritmalarından bu tip bir gruba ihtiyaç duyan sistemlerde kullanılabilir.</p>
<p>Yukarıdaki bu sayıların üzerinde tanımlı olan f fonksiyonun tasarımına göre güvenlik artırımı da söz konusudur.</p>
<p>Örneğin yukarıda verilen F fonksiyonu tasarımının bir eksik yanı bu fonksiyon sayesinde üretilen sayılarda ileri ve geri hareketin kolay olmasıdır.</p>
<p>F fonksiyonunda yapılacak değişikliklerle bu durum düzeltilebilir.</p>
<p>Öncelikle yukarıdaki F fonksiyonundaki sayılarda geri gidilebileceğini görelim:</p>
<p>Yukarıdaki sayılardan rast gele seçilen 1011 sayısını ele alalım.</p>
<p>Bu sayıdan bir önceki sayı için 011X gibi bir sayı olduğunu biliyoruz. Buradaki X değerinin hemen yanında buluna 1 değeri ile yahut işlemine sokulduğunu ve çıkan sonucun da 1 olduğunu biliyoruz. O halde denklemimiz :</p>
<p>1 ⊕ X = 1</p>
<p>Halini alır ki bu durumu veren tek X değeri 0&#8242;dır.</p>
<p>Gerçekten de yukarıdaki örnekte 1011 sayısından önce 0110 sayısı gelmektedir.</p>
<p>Görüldüğü üzere f fonksiyonun tasarımına bağlı olarak ileri gitmek kolay olurken geri gitmenin de mümkün olduğu durumlar ortaya çıkabilir.</p>
<p>Örneğimizi biraz değiştirerek 7 bitlik bir mesajdaki son iki bitin yahut sonucunun tekrarlı olarak baştaki 2 bit&#8217;e ekleneceğini varsayalım.</p>
<p>Bu durumda sayımızdaki kaydırma işlemini aşağıdaki şekilde tasarlayalım:</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 28px;"></col>
<col style="width: 22px;"></col>
<col style="width: 25px;"></col>
<col style="width: 23px;"></col>
<col style="width: 24px;"></col>
<col style="width: 24px;"></col>
<col style="width: 26px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">A</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">B</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">C</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">D</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">P</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">Q</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">R</td>
</tr>
</tbody>
</table>
</div>
<p>Yukarıdaki 7 bit için aşağıdaki kaydırma işlemini tasarlıyoruz:</p>
<p>F = Q ⊕ R</p>
<p>R = P</p>
<p>Q = D</p>
<p>P = C</p>
<p>D = B</p>
<p>C = A</p>
<p>B = F</p>
<p>A = A</p>
<p>Yukarıdaki bu LFSR tasarımını mantıksal bir devre olarak çizecek olursak aşağıdaki sonucu elde ederiz:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/051810_2224_LFSRLinearF5.png" alt="" /></p>
<p>Örnek sayılar üzerinden çalışmasını görelim. Bunun için yine başlangıç olarak 1111111 gibi bir girdi ile besleyelim.</p>
<p>1111111 ( son iki bit 11 olduğu için Q<span style="font-family:Symbol">Ä</span>R = 1⊕1 = 0)</p>
<p>0011111 ( sayılar iki kaydırıldı ve ilk iki bite bir önceki adımda bulunan 0 konuldu)</p>
<p>0000111 (sayılar iki kaydırıldı ve ilk iki bite bir önceki adımda bulunan 0 konuldu)</p>
<p>0000001 (sayılar iki kaydırıldı ve ilk iki bite bir önceki adımda bulunan 0 konuldu)</p>
<p>1100000 ( bir önceki adımdaki son iki bit 0 ve 1 olduğu için 0⊕1 = 1 sonucu bulunup ilk iki bite bunlar yerleştirildi)</p>
<p>0011000</p>
<p>0000110</p>
<p>1100001</p>
<p>1111000</p>
<p>0011110</p>
<p>1100111</p>
<p>0011001</p>
<p>1100110</p>
<p>1111001</p>
<p>1111110</p>
<p>1111111</p>
<p>Görüldüğü üzere son adımda yine başlangıç değeri elde edildi ve böylelikle daire tamamlanmış oldu.</p>
<p>Buradaki yeni örneğin bir önceki örnekten en büyük farkı sayılar arasında iler hareket etmek mümkünken geri gidilmesinin güçlüğüdür.</p>
<p>Örneğin yukarıdaki sayılardan birsini rast gele seçelim ve bu iddiayı inceleyelim. Sayımı 0011110 olsun. Bu sayının serideki bir sonraki değerini hesaplamak basittir. Son iki bit yahut işlemine sokulup sayılar iki kaydırılacak ve açılan boşluğa yahut (xor) sonucu yazılacaktır. Bu durumda değer 1100111 olacaktır.</p>
<p>Ancak bu sayıdan (yani 0011110 sayısından) bir önceki sayının, seride hangi sayı olduğunu nasıl bulabiliriz?</p>
<p>Bunun için ilk iki bitin aslında bir önceki adımdaki yahut(xor) işleminde çıkan sonuç olduğunu söyleyerek bir önceki adımda bulunan sayının 11110XY gibi bir sayı olduğunu ve burada</p>
<p>X ⊕ Y = 0</p>
<p>Olduğunu söyleyebiliriz.</p>
<p>Şimdi sorumuz acaba X ve Y değerleri nedir? Sonuç 0 olduğu için ya X=1, Y=1 yada X=0 ve Y=0 doğru olacaktır.</p>
<p>Ne yazık ki hangisi olduğu söylenemez.</p>
<p>Görüldüğü üzere LFSR kullanılarak elde edilen serilere özel F fonksiyonları ile amaca yönelik olarak ek özellikler kazandırılabilir.</p>

<p class="sayac_bilgi">189 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2010/05/19/lfsr-linear-feedback-shift-register/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kaydırma Kayıtları (Kaydırma Yazmaçları , Shift Registers)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/10/10/kaydirma-kayitlari-kaydirma-yazmaclari-shift-registers/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/10/10/kaydirma-kayitlari-kaydirma-yazmaclari-shift-registers/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 15:49:05 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2009/10/10/kaydirma-kayitlari-kaydirma-yazmaclari-shift-registers/</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin özellikle mantık devreleri (logic circuits) alanında kullanılan bir devre tasarımı şeklidir. Alt yapı olarak flip-floplardan istifade eden tasarımda amaç girilen ikilik tabandaki bitlerin (ikil) her saat tikiyle bir kaydırılmasıdır. Bir kaydırma yazmacının mantık devreleri ile tasarımı aşağıdaki şekilde görülebilir: Yukarıdaki şekilde Q0&#8242;dan Q3&#8242;e kadar olan girdiler D-Flipfloplar üzerine [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinin özellikle mantık devreleri (logic circuits) alanında kullanılan bir devre tasarımı şeklidir. Alt yapı olarak <a href="http://www.bilgisayarkavramlari.com/2007/12/20/flip-flop-flipflop/">flip-floplardan</a> istifade eden tasarımda amaç girilen ikilik tabandaki <a href="http://bilgisayarkavramlari.com/2007/11/24/bit-ikil/">bitlerin (ikil)</a> her saat tikiyle bir kaydırılmasıdır.</p>
<p>Bir kaydırma yazmacının mantık devreleri ile tasarımı aşağıdaki şekilde görülebilir:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/101009_1549_KaydrmaKayt1.png" alt="" width="512" height="176" /></p>
<p>Yukarıdaki şekilde Q0&#8242;dan Q3&#8242;e kadar olan girdiler <a href="http://www.bilgisayarkavramlari.com/2007/12/20/flip-flop-flipflop/">D-Flipfloplar</a> üzerine yüklendikten sonra her saat vuruşuyla (clock pulse) değerler kaydırılır. Basitçe Q0&#8242;daki veri Q1&#8242;e ve Q1&#8242;deki Q2&#8242;ye vs.</p>
<p>Yani örneğin yukarıdaki kaydırma yazmacı (shift-register) devresinde ilk besleme (t<sub>0</sub> zamanı için) değeri olarak Q3, Q2, Q1, Q0 değerlerine 1010 verilmiş olsun. Saat tikiyle t1 için  0101 -&gt; t2 için 1011 -&gt;t3 için  0111 -&gt; t4 için 1111 şeklinde değerler okunacaktır. Bu örnekte t1den sonraki Q0 değerlerinin 1 olarak girdiğini kabul ediyoruz.</p>
<p>Yukarıdaki bu kaydırma yazmacı <a href="http://www.bilgisayarkavramlari.com/2007/12/20/flip-flop-flipflop/">D flip floplar</a> ile yapılmış ve 4 ikillik (bit) bir örnektir. Yukarıdaki devre tasarımı için bir <a href="http://www.bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk çizelgesi (truth table)</a> çizilecek olursa:</p>
<div>
<table style="border-collapse:collapse" border="0">
<colgroup>
<col style="width: 66px;"></col>
<col style="width: 66px;"></col>
</colgroup>
<tbody>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">t0 için</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">t1 için</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0000</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0000</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0001</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0011</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0010</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0011</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0111</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0100</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1000</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0101</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1011</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0110</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0111</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1111</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1000</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0000</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1001</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0011</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1010</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1011</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">0111</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1100</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1000</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1101</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1011</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1110</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1100</td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1111</td>
<td style="padding-left: 7px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt">1111</td>
</tr>
</tbody>
</table>
</div>
<p>Şeklinde sonuç elde edilir. Yukarıdaki örnekte Q0 girişinin t0 ve t1 anları için aynı kaldığı kabul edilmiştir.</p>
<p>Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.</p>
<p>Yukarıdaki doğruluk çizelgesine dikkat edilirse kaydırma işleminden de anlaşılacağı üzere ilk <a href="http://bilgisayarkavramlari.com/2007/11/24/bit-ikil/">bitin (ikil)</a> sonuçta bir etkisi yoktur.</p>
<p>Kaydırma yazmaçları giriş ve çıkışlarına göre 4 farklı grupta incelenebilir.</p>
<ul>
<li>SISO (Serial input serial output , seri giriş seri çıkış)</li>
<li>PIPO (Parallel input parallel output, paralel giriş seri çıkış)</li>
<li>PISO (Parallell input serial output, paralel giriş seri çıkış)</li>
<li>SIPO (Serial input parallel output , seri giriş paralel çıkış)</li>
</ul>
<p>Yukarıdaki çizim ve <a href="http://www.bilgisayarkavramlari.com/2007/12/08/dogruluk-cizelgesi-truth-table/">doğruluk tablosu</a> verilen kaydırma yazmacı seri giriş ve paralel çıkışa bir örnektir. Burada dikkat edilirse giriş tek bir noktadan seri olarak (arka arkaya) yapılmakta ve çıkış her Q noktasından paralel olarak okunmaktadır.</p>

<p class="sayac_bilgi">186 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/10/10/kaydirma-kayitlari-kaydirma-yazmaclari-shift-registers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turing Makinesi (Turing Machine)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 13:55:12 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[algoritma analizi (teory of algorithms)]]></category>
		<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Bilgisayar Standartları]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Donanım ( Hardware )]]></category>
		<category><![CDATA[Dosya Organizasyonu (File Organisation)]]></category>
		<category><![CDATA[işletim sistemleri]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>
		<category><![CDATA[Sistem Programlama (System Programming)]]></category>
		<category><![CDATA[veri yapıları]]></category>
		<category><![CDATA[Turing]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2681</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin önemli bir kısmını oluşturan otomatlar (Automata) ve Algoritma Analizi (Algorithm analysis) çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar. Turing Makinesinin Tanımı Basitçe bir kafadan (head) ve bir de teyp bandından [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinin önemli bir kısmını oluşturan <a href="http://www.bilgisayarkavramlari.com/category/automata-otomatlar/">otomatlar (Automata) </a>ve <a href="http://www.bilgisayarkavramlari.com/category/algoritma-analizi-teory-of-algorithms/">Algoritma Analizi (Algorithm analysis) </a>çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar.</p>
<p><strong>Turing Makinesinin Tanımı</strong></p>
<p>Basitçe bir kafadan (head) ve bir de teyp bandından (tape) oluşan bir makinedir.</p>
<p><img class="alignnone size-full wp-image-2683" title="turingtape" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingtape.jpg" alt="turingtape" width="425" height="148" /></p>
<p>Makinede yapılabilecek işlemler</p>
<ul>
<li>Yazmak</li>
<li>Okumak</li>
<li>Bandı ileri sarmak</li>
<li>Bandı geri sarmak</li>
</ul>
<p>şeklinde sıralanabilir.</p>
<p><strong>Chomsky hiyerarşisi ve Turing Makinesi</strong></p>
<p>Bütün teori bu basit dört işlem üzerine kurulmuştur ve sadece yukarıdaki bu işlemleri kullanarak bir işin yapılıp yapılamayacağı veya bir dilin bu basit 4 işleme indirgenip indirgenemeyeceğine göre diller ve işlemler tasnif edilmiştir.</p>
<p><img class="alignnone size-full wp-image-2682" title="turingkumesi" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingkumesi.jpg" alt="turingkumesi" width="496" height="359" /></p>
<p>Bu sınıflandırma yukarıdaki venn şeması ile gösterilmiştir. Aynı zamanda <a href="http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/">chomsky hiyerarşisi (chomsky hierarchy)</a> için 1. seviye (type-1) olan ve Turing makinesi ile kabul edilebilen diller bütün tip-2 ve tip-3 dilleri yani içerk bağımsız dilleri ve düzenli dilleri kapsamaktadır. Ayrıca ilave olarak içerik bağımsız dillerin işleyemediği (üretemediği veya parçalayamadığı (parse) ) a<sup>n</sup>b<sup>n</sup>c<sup>n</sup> şeklindeki kelimeleri de işleyebilmektedir.  Düzenli ifadelerin işleyememesi konusunda bilgi için <a href="http://www.bilgisayarkavramlari.com/2009/03/22/duzenli-ifadelerde-pompalama-onsavi-pumping-lemma-for-regular-expressions/">düzenli ifadelerde pompalama savı (pumping lemma in regular expressions)</a> ve <a href="http://www.bilgisayarkavramlari.com/2009/03/22/icerik-bagimsiz-gramerler-icin-pompalama-onsavi-pumping-lemma-for-context-free-grammers/">içerik bağımsız dillerin işlemeyemesi için de içerik bağımsız dillerde pompalama savı (pumping lemma for CFG)</a> başlıklı yazıları okuyabilirsiniz.</p>
<p><strong>Turing Makinesinin Akademik Tanımı</strong></p>
<p>Turing makineleri literatürde akademik olarak aşağıdaki şekilde tanımlanır:</p>
<p><img class="alignnone size-full wp-image-2685" title="turing_akademik" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing_akademik.jpg" alt="turing_akademik" width="167" height="24" /></p>
<p>Burada M ile gösterilen makinenin parçaları aşağıda listelenmiştir:</p>
<p>Q sembolü sonlu sayıdaki durumların <a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/">kümesidir</a>. Yani makinenin işleme sırasında aldığı durumardır.</p>
<p>Γ sembolü dilde bulunan bütün harfleri içeren alfabeyi gösterir. Örneğin ikilik tabandaki sayılar ile işlem yapılıyorsa {0,1} şeklinde kabul edilir.</p>
<p>Σ sembolü ile makineye verilecek girdiler (input)<a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/"> kümesi</a> gösterilir. Girdi <a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/">kümesi</a> dildeki harfler dışında bir sembol taşıyamayacağı için Σ <span class="b">⊆ </span>Γ demek doğru olur.</p>
<p>δ sembolü dilde bulunan ve makinenin çalışması sırasında kullanacağı geçişleri (transitions) tutmaktadır.</p>
<p><span class="b">◊ sembolü teyp bandı üzerindeki boşlukları ifade etmektedir. Yani teyp üzerinde hiçbir bilgi yokken bu sembol okunur.<br />
</span></p>
<p>q<sub>0</sub> sembolü makinenin başlangıç durumunu (state) tutmaktadır ve dolayısıyla q<sub>0</sub> <span class="b">⊆</span> Q olmak zorundadır.</p>
<p>F sembolü makinenin bitiş durumunu (state) tutmaktadır ve yine F <span class="b">⊆ Q olmak zorundadır. </span></p>
<p><strong><span class="b">Örnek Turing Makinesi</span></strong></p>
<p><span class="b">Yukarıdaki sembolleri kullanarak örnek bir Turing makinesini aşağıdaki şekilde inşa edebiliriz. </span></p>
<p><span class="b">Örneğin basit bir kelime olan a* <a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/">düzenli ifadesini (regular expression)</a> Turing makinesi ile gösterelim ve bize verilen aaa şeklindeki 3 a yı makinemizin kabul edip etmediğine bakalım. </span></p>
<p><span class="b">Tanım itibariyle makinemizi aşağıdaki şekilde tanımlayalım:</span></p>
<p>M = { {q<sub>0</sub>,q<sub>1</sub>} , { a } , { a,x } , { q<sub>0</sub> a→a R q<sub>0</sub> , q<sub>0</sub> x→x L q<sub>1</sub>} , q<sub>0</sub> , x , q<sub>1</sub> }</p>
<p>Yukarıdaki bu makineyi yorumlayacak olursak:</p>
<p>Q değeri olarak   {q<sub>0</sub>,q<sub>1</sub>} verilmiştir. Yani makinemizin ik idurumu olacaktır.</p>
<p>Γ değeri olarak { a,x } verilmiştir. Yani makinemizdeki kullanılan semboller a ve x&#8217;ten ibarettir.</p>
<p>Σ değeri olara {a} verilmiştir. Yani makinemize sadece a girdisi kabul edilmektedir.</p>
<p>δ değeri olarak iki geçiş verilmiştir { q<sub>0</sub> a→a R q<sub>0</sub> , q<sub>0</sub> x→x L q<sub>1</sub>} buraadki R sağa sarma L ise sola sarmadır ve görüleceği üzere Q değerindeki durumlar arasındaki geçişleri tutmaktadır.</p>
<p><span class="b">◊ değeri olarak x sembolü verilmiştir. Buradan x sembolünün aslında boş sembolü olduğu ve bantta hiçbir değer yokken okunan değer olduğu anlaşılmaktadır.<br />
</span></p>
<p>q<sub>0</sub> ile makinenin başlangıç durumundaki hali belirtilmiştir.</p>
<p>F değeri olarak q<sub>1</sub> değeri verilmiştir. Demek ki makinemiz q<sub>1</sub> durumuna geldiğinde bitmektedir (halt) ve bu duruma gelmesi halinde bu duruma kadar olan girdileri kabul etmiş olur<span class="b">. </span></p>
<p>Yukarıdaki bu tanımı görsel olarak göstermek de mümkündür:</p>
<p><img class="alignnone size-full wp-image-2686" title="turingornek" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingornek.jpg" alt="turingornek" width="432" height="225" /></p>
<p><strong><span class="b"><br />
</span></strong></p>
<p><span class="b">Yukarıdaki bu temsili resimde verilen turing makinesi çizilmiştir.</span></p>
<p><span class="b">Makinemizin örnek çalışmasını ve bant durumunu adım adım inceleyelim. </span></p>
<p><span class="b">Birinci adımda bandımızda aaa (3 adet a) yazılı olduğunu kabul edelim ve makinemizin bu aaa değerini kabul edip etmeyeceğini adım adım görelim. Zaten istediğimiz de aaa değerini kabul eden bir makine yapabilmekti.</span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2687" title="turing1" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing1.jpg" alt="turing1" width="487" height="412" /></span></p>
<p><span class="b">Yukarıdaki ilk durumda bant üzerinde beklenen ve kabul edilip edilmeyeceği merak edilen değerimiz bulunuyor. Makinemizin kafasının okuduğu değer a sembolü. Makinemizin geçiş tasarımına göre q<sub>0</sub> halinde başlıyoruz ve a geldiğinde teybi sağa sarıp yine q<sub>0</sub> durumunda kalmamız gerekiyor.</span></p>
<p><span class="b"><br />
</span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2689" title="turing21" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing21.jpg" alt="turing21" width="509" height="407" /></span></p>
<p>Yeni durumda kafamızın okuduğu değer banttaki 2. a harfi ve bu durumda yine <span class="b">q<sub>0</sub> </span> durumundayken teybi sağa sarıp yine <span class="b">q<sub>0</sub> </span> durumunda kalmamız tasarlanmış<span class="b"> </span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2690" title="turing3" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing3.jpg" alt="turing3" width="515" height="380" /></span></p>
<p>3. durumda kafamızın okuduğu değer yine a sembolü olmakta ve daha önceki 2 duruma benzer şekilde <span class="b">q<sub>0</sub> </span> durumundayken a sembolü okumanın sonucu olarak teybi sağa sarıp <span class="b">q<sub>0</sub> </span>durumunda sabit kalıyoruz.</p>
<p><span class="b"><img class="alignnone size-full wp-image-2691" title="turing4" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing4.jpg" alt="turing4" width="487" height="364" /></span></p>
<p>4. adımda teypten okuduğumuz değer boşluk sembolü x oluyor. Bu değer makinemizin tasarımında <span class="b">q<sub>1</sub> </span><span class="b"> </span>durumuna gitmemiz olarak tasarlanmış ve teybe sola sarma emri veriyoruz.</p>
<p><span class="b"><img class="alignnone size-full wp-image-2692" title="turing5" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing5.jpg" alt="turing5" width="586" height="322" /></span></p>
<p><span class="b">Makinenin son durumunda </span><span class="b">q<sub>1</sub> </span><span class="b"> durumu makinenin kabul ve bitiş durumu olarak tasarlanmıştı ( makinenin tasarımındaki F kümesi) dolayısıyla çalışmamız burada sonlanmış ve giriş olarak aaa girdisini kabul etmiş oluyoruz.</span></p>
<p><strong><span class="b">2. Örnek</span></strong></p>
<p><span class="b">Hasan Bey&#8217;in sorusu üzerine bir örnek makine daha ekleme ihtiyacı zuhur etti. Makinemiz {a,b} sembolleri için çalışsın ve ilk durum olarak bandın en solunda başlayarak bantta bulunan sembolleri silmek için tasarlansın. Bu tasarımı aşağıdaki temsili resimde görülen otomat ile yapabiliriz:</span></p>
<p><span class="b"><img class="alignnone" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/turing_silici.jpg" alt="" width="454" height="123" /></span></p>
<p><span class="b">Görüldüğü üzere makinemizde 4 durum bulunuyor, bunlardan en sağda olan h durumu bitişi (halt) temsil ediyor. Şimdi bu makinenin bir misal olarak &#8220;aabb&#8221; yazılı bir bantta silme işlemini nasıl yaptığını adım adım izah etmeye çalışalım. </span></p>
<p><span class="b">Aşağıda, makinenin her adımda nasıl davranacağı bant üzerinde gösterilmiş ve altında açıklanmıştır. Sarı renge boyalı olan kutular, kafanın o anda üzerinde durduğu bant konumunu temsil etmektedir.<br />
</span></p>
<p><span class="b"><img class="alignnone" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/turing_silici_adimlar.jpg" alt="" width="374" height="590" /></span></p>
<p><span class="b">Netice olarak Hasan Bey&#8217;in sorusuna temel teşkil eden ve örneğin q1 üzerindeki döngülerden birisi olan b/a,R geçişi, banttan b okunduğunda banta a değerini yaz manasındadır.</span></p>
<p><span class="b">Yine bu yazıya yapılan yorumlarda sorulan bir sorunun cevabını aşağıdaki bağlantıda çözdüm. Soru, eşit a ve b içeren Turing makinesinin tasarımı idi, bağlantıya tıklayarak okuyabilirsiniz. </span></p>
<p><a href="http://www.bilgisayarkavramlari.com/2010/11/19/esit-a-ve-b-bulunduran-turing-makinesi-ornegi/">http://www.bilgisayarkavramlari.com/2010/11/19/esit-a-ve-b-bulunduran-turing-makinesi-ornegi/</a></p>

<p class="sayac_bilgi">1,677 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Atomluluk (Atomicity)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/03/30/atomluluk-atomicity/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/03/30/atomluluk-atomicity/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 13:03:53 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[algoritma analizi (teory of algorithms)]]></category>
		<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[bilgisayar felsefesi]]></category>
		<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Donanım ( Hardware )]]></category>
		<category><![CDATA[Dosya Organizasyonu (File Organisation)]]></category>
		<category><![CDATA[işletim sistemleri]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[Nesne Yönelimli Programlama]]></category>
		<category><![CDATA[Network(Ağ)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>
		<category><![CDATA[Sistem Programlama (System Programming)]]></category>
		<category><![CDATA[Temel Bilimler]]></category>
		<category><![CDATA[Veri Güvenliği(Cryptography)]]></category>
		<category><![CDATA[Veri Sıkıştırma (Data Compression)]]></category>
		<category><![CDATA[Veri Tabanı (Database)]]></category>
		<category><![CDATA[veri yapıları]]></category>
		<category><![CDATA[yapay zeka (artificial intelligence)]]></category>
		<category><![CDATA[Yazılım Mühendisliği (Software Engineering)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2009/03/30/atomluluk-atomicity/</guid>
		<description><![CDATA[Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan: Şadi Evren ŞEKER</p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>TR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} --></p>
<p><!--[endif]--></p>
<p class="MsoNormal">Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder.</p>
<p class="MsoNormal">Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır.</p>
<p class="MsoNormal">Benzer şekilde bir verinin bölünemezliğini ifade etmek için de veri tabanı, veri güvenliği veya veri iletimi konularında kullanılabilir.</p>
<p class="MsoNormal">Örneğin veri tabanında bir işlemin (transaction) tamamlanmasının bölünemez olması gerekir. Yani basit bir örnekle bir para transferi bir hesabın değerinin artması ve diğer hesabın değerinin azalmasıdır (havale yapılan kaynak hesaptan havale yapılan hedef hesaba doğru paranın yer değiştirmesi) bu sıradaki işlemlerin bölünmeden tamamlanması (atomic olması) gerekir ve bir hesaptan para eksildikten sonra, diğer hesapa para eklenmeden araya başka işlem giremez.</p>
<p class="MsoNormal">Benzer şekilde işletim sistemi tasarımı, paralel programlama gibi konularda da bir işlemin atomic olması araya başka işlemlerin girmemesi anlamına gelir.</p>
<p class="MsoNormal">Örneğin sistem tasarımında kullanılan check and set fonksiyonu önce bir değişkeni kontrol edip sonra değerini değiştirmektedir. Bir değişkenin değeri kontrol edildikten sonra içerisine değer atanmadan farklı işlemler araya girerse bu sırada problem yaşanması mümkündür. Pekçok işlemci tasarımında buna benzer fonksiyonlar sunulmaktadır.</p>
<p class="MsoNormal">Genel olarak bölünemezlik (atomicity) geliştirilen ortamda daha düşük seviyeli kontroller ile sağlanır. Örneğin işletim sistemlerinde kullanılan<a href="http://www.bilgisayarkavramlari.com/2009/03/30/semafor-semaphore-flama-isaret/"> semafor’lar (semaphores)</a>, kilitler (locks), koşullu değişkenler (conditional variables) ve monitörler (monitors) bunlar örnektir ve işletim sisteminde bir işlemin yapılması öncesinde bölünmezlik sağlayabilirler.</p>
<p class="MsoNormal">Kullanılan ortama göre farklı yöntemlerle benzer bölünmezlikler geliştirilebilir. Örneğin veritabanı programlama sırasında koşul (condition) veya kilit (lock) kullanımı bölünmezliği sağlayabilir.</p>

<p class="sayac_bilgi">174 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/03/30/atomluluk-atomicity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

