<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wx="http://ilps.science.uva.nl/WikiXML/wx" xml:lang="pt" lang="pt">
<head>
<title>Indução estrutural</title>
<meta name="wx_namespace" content="0"/>
<meta name="wx_pagename" content="Indução_estrutural"/>
<meta name="wx_page_id" content="659008"/>
</head>
<body>
<div id="wx_article">
<wx:section level="1" title="Indução estrutural" id="wxsec1"><h1 class="pagetitle" id="wx1">Indução estrutural</h1>

<p id="wx2">A <b id="wx3">indução estrutural</b> é um método de demonstração que é usado na <a href="/wpt/L%C3%B3gica_matem%C3%A1tica" title="Lógica matemática" wx:linktype="known" wx:pagename="Lógica_matemática" wx:page_id="1202" id="wx4">lógica matemática</a> (por exemplo, para provar <a href="/wpt/Teorema" title="Teorema" wx:linktype="known" wx:pagename="Teorema" wx:page_id="39898" id="wx5">teoremas</a>), em <a href="/wpt/Ci%C3%AAncia_da_computa%C3%A7%C3%A3o" title="Ciência da computação" wx:linktype="known" wx:pagename="Ciência_da_computação" wx:page_id="2683" id="wx6">ciência da computação</a>, em <a href="/wpt/Teoria_dos_grafos" title="Teoria dos grafos" wx:linktype="known" wx:pagename="Teoria_dos_grafos" wx:page_id="1862" id="wx7">teoria dos grafos</a>, e alguns outros campos da matemática. Podemos dizer que é uma generalização do método de <a href="/wpt/Indu%C3%A7%C3%A3o_matem%C3%A1tica" title="Indução matemática" wx:linktype="known" wx:pagename="Indução_matemática" wx:page_id="23807" id="wx8">indução matemática</a>. A <b id="wx9">recursão estrutural</b> é um método de <a href="/wpt/Recurs%C3%A3o" title="Recursão" wx:linktype="known" wx:pagename="Recursão" wx:page_id="569807" id="wx10">recursão</a> que está para a indução estrutural assim como a recursão ordinária está para a indução matemática usual.</p>

<p id="wx11">Em geral, a idéia é que se deseja demonstrar alguma proposição <i id="wx12">P</i>(<i id="wx13">x</i>), onde <i id="wx14">x</i> é alguma instância de algum tipo de estrutura recursivamente definida, tais como listas ou árvores. Uma <a href="/wpt/Rela%C3%A7%C3%A3o_de_ordem" title="Relação de ordem" wx:linktype="known" wx:pagename="Relação_de_ordem" wx:page_id="23814" id="wx15">ordem parcial</a> <a href="/wpt/Bem-fundada" class="new" title="Bem-fundada" wx:linktype="unknown" wx:pagename="Bem-fundada" id="wx16">bem-fundada</a> (Well-founded) é definida sobre as estruturas. Indução estrutural é um método de demonstração em que a proposição vale para todas as estruturas <a href="/wpt/M%C3%ADnimo" title="Mínimo" wx:linktype="known" wx:pagename="Mínimo" wx:page_id="314480" id="wx17">minimais</a>, e que se valer para as subestruturas de uma determinada estrutura <i id="wx18">S</i>, então deverá valer para <i id="wx19">S</i> também.</p>

<p id="wx20">Uma função estruturalmente recursiva usa a mesma idéia de modo a definir uma função recursiva: "os casos base" dão conta de cada estrutura minimal e se há regras para o caso <a href="/wpt/Recurs%C3%A3o" title="Recursão" wx:linktype="known" wx:pagename="Recursão" wx:page_id="569807" id="wx21">recursivo</a>. A recursão estrutural é geralmente demonstrada correta através da indução estrutural; em casos mais triviais, a etapa indutiva é deixada frequentemente de fora da prova. A função <i id="wx22">comprimento</i> (length) e a função <i id="wx23">concatenação</i> são estruturalmente recursivas e mostradas no exemplo abaixo.</p>

<p id="wx24">Por exemplo, imagine que as estruturas que vamos utilizar sejam listas, agora introduza uma ordem parcial ‘&lt;’ na qual <i id="wx25">L</i> &lt; <i id="wx26">M</i>. Essa ordem parcial indica que a lista <i id="wx27">L</i> é a cauda da lista <i id="wx28">M</i>. Segundo esta ordem parcial, o único elemento minimal é quando temos a lista vazia [ ]. Uma demonstração por indução estrutural de alguma proposição <i id="wx29">P</i>(<i id="wx30">L</i>) consiste então em duas partes: Uma demonstração de que <i id="wx31">P</i>([ ]) é verdadeiro, e uma demonstração que se <i id="wx32">P</i>(<i id="wx33">L</i>) for verdadeiro para alguma lista <i id="wx34">L</i>, e se <i id="wx35">L</i> &lt; <i id="wx36">M</i> (<i id="wx37">L</i> for a cauda de uma lista <i id="wx38">M</i>), então <i id="wx39">P</i>(<i id="wx40">M</i>) também deve ser verdadeiro.</p>

<div id="wx_toc"/>

<a id="Exemplo_com_listas" name="Exemplo_com_listas"/>
<wx:section level="2" title="Exemplo com listas" id="wxsec2"><h2 id="wx41">Exemplo com listas</h2>

<p id="wx42">Considere a seguinte propriedade das listas:</p>

<pre id="wx43">
    comprimento (L ++ M) = comprimento L + comprimento M          [IG]
</pre>

<p id="wx44">Aqui ++ denota a função concatenação de listas.</p>

<p id="wx45">A fim de demonstrar isto, nós necessitamos definir a operação para o <i id="wx46">comprimento</i> e a operação para a <i id="wx47">adição</i>. Aqui (<i id="wx48">h</i>:<i id="wx49">t</i>) denota que dada uma lista cuja cabeça é <i id="wx50">h</i> e a cauda é <i id="wx51">t</i>.</p>

<p id="wx52"><br id="wx53"/>
</p>

<pre id="wx54">
    comprimento []     = 0                   [COMP1]
    comprimento (h:t)  = 1 + comprimento t   [COMP2]
</pre>

<pre id="wx55">
    [] ++ lista    = lista           [CONC1]
    (h:t) ++ lista = h: (t ++ lista) [CONC2]
</pre>

<p id="wx56">Nossa proposição <i id="wx57">P</i>(<i id="wx58">l</i>) é que IG é verdadeiro para todas as listas <i id="wx59">M</i> quando <i id="wx60">L</i> é <i id="wx61">l</i>. Nós queremos mostrar que <i id="wx62">P</i>(<i id="wx63">l</i>) é verdadeiro para todas as listas <i id="wx64">l</i>. Demonstraremos isto por indução estrutural sobre as listas.</p>

<p id="wx65">Primeiramente nós demontraremos que <i id="wx66">P</i>([ ]) é verdadeiro, isto é, IG é verdadeiro para todas as listas <i id="wx67">M</i> quando <i id="wx68">L</i> for a lista vazia [ ]. Com efeito:</p>

<pre id="wx69">
         comprimento (L ++ M) = comprimento L     + comprimento M
         comprimento ([]++ M) = comprimento []    + comprimento M
         comprimento       M  = comprimento []    + comprimento M   (por CONC1)
         comprimento       M  =      0       + comprimento M        (por COMP1)
</pre>

<p id="wx70">Isto demonstra que o teorema IG é verdadeiro para todo <i id="wx71">M</i>, quando <i id="wx72">L</i> é [ ], uma vez que o lado esquerdo é igual ao lado direito.</p>

<p id="wx73">Agora nós provaremos <i id="wx74">P</i>(<i id="wx75">l</i>) quando <i id="wx76">l</i> é uma lista não vazia. Já que <i id="wx77">l</i> não é vazia, ela tem uma cabeça, <i id="wx78">x</i>, e uma cauda, <i id="wx79">xs</i>, logo nós podemos denotá-la como (<i id="wx80">x</i>:<i id="wx81">xs</i>). A hipótese da indução é que IG é verdadeiro para todos os valores de <i id="wx82">M</i> quando <i id="wx83">L</i> é <i id="wx84">xs</i>:</p>

<pre id="wx85">
    length (xs ++ M) = length xs + length M        (hipótese de indução)
</pre>

<p id="wx86">Nós gostaríamos de mostrar que se este for o caso, então IG é também verdadeiro para todos os valores de <i id="wx87">M</i> quando <i id="wx88">L</i> é uma lista (<i id="wx89">x</i>:<i id="wx90">xs</i>) cuja a cauda for <i id="wx91">xs</i>. Prosseguiremos como antes: IG é verdadeiro para todos os valores de <i id="wx92">M</i> quando <i id="wx93">L</i> é <i id="wx94">xs</i>:</p>

<pre id="wx95">
    comprimento (L ++ M)      = comprimento L      + comprimento M   
    comprimento ((x:xs)++ M)  = comprimento (x:xs) + comprimento M
    comprimento (x:(xs ++ M)) = comprimento (x:xs) + comprimento M   (por CONC2)
    1 + comprimento (xs ++ M) = comprimento (x:xs) + comprimento M   (por COMP2)
    1 + comprimento (xs ++ M) = 1 + comprimento xs + comprimento M   (por COMP2)
        comprimento (xs ++ M) =     comprimento xs + comprimento M
</pre>

<p id="wx96">Acabamos de observar que na última linha chegamos justamente na hipótese de indução, logo a demonstração está completa.</p>

<a id="Exemplo_com_grafos" name="Exemplo_com_grafos"/>
</wx:section><wx:section level="2" title="Exemplo com grafos" id="wxsec3"><h2 id="wx97">Exemplo com grafos</h2>

<p id="wx98">Teorema.Seja <i id="wx99">G</i>(<i id="wx100">V</i>,<i id="wx101">A</i>) um <a href="/wpt/Teoria_dos_grafos" title="Teoria dos grafos" wx:linktype="known" wx:pagename="Teoria_dos_grafos" wx:page_id="1862" id="wx102">grafo</a> não orientado e conexo com <i id="wx103">n</i> vértices. Então <i id="wx104">G</i> contém pelo menos <i id="wx105">n-1</i> arestas.</p>

<p id="wx106">Segue a demonstração por indução estrutural.</p>

<p id="wx107">Assuma que <i id="wx108">G(V,A)</i> é um grafo não orientado e conexo com <i id="wx109">n</i> vértices. Seja <i id="wx110">P</i> a propriedade de que <i id="wx111">G</i> tenha pelo menos <i id="wx112">n</i>-1 arestas. Base: <i id="wx113">G</i>(1,0) tem um vértice e nenhuma aresta. Logo, a propriedade <i id="wx114">P</i> é verdadeira.</p>

<p id="wx115">Passo de indução: Seja <i id="wx116">G</i>(<i id="wx117">V</i>,<i id="wx118">A</i>) um grafo não orientado e conexo com a propriedade <i id="wx119">P</i> acima, e <i id="wx120">G'</i> um grafo obtido a partir de <i id="wx121">G</i> por uma das operações que se seguem:</p>

<p id="wx122">1.Inserção de vértice: Para que o grafo <i id="wx123">G</i> ' permaneça conexo, ao se inserir um novo vértice em <i id="wx124">G</i> ' faz-se necessário inserir uma nova aresta que o conecte a algum outro vértice de <i id="wx125">G</i> '. Logo a propriedade <i id="wx126">P</i> é mantida em <i id="wx127">G</i> '.</p>

<p id="wx128">2.Inserção de aresta: A inserção de uma nova aresta não altera a propriedade <i id="wx129">P</i>. Portanto, <i id="wx130">G</i> contém pelo menos <i id="wx131">n-1</i> arestas.</p>

<a id="Princ.C3.ADpio_da_boa-ordena.C3.A7.C3.A3o" name="Princ.C3.ADpio_da_boa-ordena.C3.A7.C3.A3o"/>
</wx:section><wx:section level="2" title="Princípio da boa-ordenação" id="wxsec4"><h2 id="wx132">Princípio da boa-ordenação</h2>

<p id="wx133">Assim como a <a href="/wpt/Indu%C3%A7%C3%A3o_matem%C3%A1tica" title="Indução matemática" wx:linktype="known" wx:pagename="Indução_matemática" wx:page_id="23807" id="wx134">indução matemática</a> é equivalente ao <a href="/wpt/Princ%C3%ADpio_da_boa-ordena%C3%A7%C3%A3o" title="Princípio da boa-ordenação" wx:linktype="known" wx:pagename="Princípio_da_boa-ordenação" wx:page_id="75464" id="wx135">princípio da boa-ordenação</a>, a indução estrutural é também equivalente ao princípio da boa-ordenação. Se o conjunto de todas as estruturas de um determinado tipo admitir uma <a href="/wpt/Rela%C3%A7%C3%A3o_de_ordem" title="Relação de ordem" wx:linktype="known" wx:pagename="Relação_de_ordem" wx:page_id="23814" id="wx136">ordem parcial</a> <a href="/wpt/Bem-fundada" class="new" title="Bem-fundada" wx:linktype="unknown" wx:pagename="Bem-fundada" id="wx137">bem-fundada</a>, então cada subconjunto não vazio deve ter um elemento <a href="/wpt/M%C3%ADnimo" title="Mínimo" wx:linktype="known" wx:pagename="Mínimo" wx:page_id="314480" id="wx138">minimal</a>. (Esta é a definição para "bem-fundada"). A relevância do lema neste contexto é que ele nos permite deduzir que se houver algum contra-exemplo ao teorema que nós queremos provar, deve haver um contra-exemplo mínimo. Se nós pudermos mostrar que a existência do contra-exemplo minimal implica um contra-exemplo ainda menor, nós temos uma contradição (uma vez que o contra-exemplo minimal não seria minimal) e portanto o conjunto dos contra-exemplos deve ser vazio.</p>

<p id="wx139">Como um exemplo deste tipo de argumento, considere o conjunto de todas as <a href="/wpt/%C3%81rvore_bin%C3%A1ria" title="Árvore binária" wx:linktype="known" wx:pagename="Árvore_binária" wx:page_id="345158" id="wx140">árvores binárias</a>. Nós mostraremos que o número das folhas em uma árvore estritamente binária é um número a mais do que o número de nós interiores. Suponha que há um contra-exemplo; então deve existir uma árvore minimal com o menor número possível de nós interiores. Este contra-exemplo, <i id="wx141">C</i>, tem <i id="wx142">n</i> nós interiores e <i id="wx143">l</i> folhas, aonde <i id="wx144">n</i>+1 ≠ <i id="wx145">l</i>. Além disso, <i id="wx146">C</i> não deve ser trivial, porque a árvore trivial tem <i id="wx147">n</i> = 0 e <i id="wx148">l</i> = 1 e não é consequentemente um contra-exemplo. <i id="wx149">C</i> tem portanto ao menos uma folha cujo nó pai é um nó interior. Remova esta folha e seu pai da árvore, promovendo o nó da folha irmã à posição ocupada anteriormente por seu pai. Isto reduz <i id="wx150">n</i> e <i id="wx151">l</i> por 1, assim a árvore nova terá também <i id="wx152">n</i>+1 ≠ <i id="wx153">l</i> e é conseqüentemente um contra-exemplo ainda menor. Mas, por hipótese, <i id="wx154">C</i> já era o menor contra-exemplo; portanto, a própria suposição de que haveria contra-exemplos tem que ser falsa. Perceba que aqui a ordem parcial por trás dessa noção "de menor que" é aquela que diz que <i id="wx155">S</i> &lt; <i id="wx156">T</i> sempre que <i id="wx157">S</i> tem menos nós do que <i id="wx158">T</i>.</p>

<a id="Refer.C3.AAncias" name="Refer.C3.AAncias"/>
</wx:section><wx:section level="2" title="Referências" id="wxsec5"><h2 id="wx159">Referências</h2>

<ul id="wx160">
<li id="wx161"><a href="http://www.inf.ufsc.br/grafos/teo-prov/teoremas-de-grafos.htm-" class="external text" wx:linktype="external" rel="nofollow" id="wx162">Teoremas - provas de teoremas relacionados com a Teoria de Grafos</a></li>
</ul>
</wx:section></wx:section></div>
<div id="wx_categorylinks">
<a href="/wpt/index.php?title=Especial:Categories&amp;article=Indu%C3%A7%C3%A3o_estrutural" title="Especial:Categories" wx:linktype="known" wx:pagename="Especial:Categories" id="wx163">Categorias de páginas</a>: <span dir="ltr" id="wx164"><a href="/wpt/Categoria:L%C3%B3gica_matem%C3%A1tica" title="Categoria:Lógica matemática" wx:linktype="known" wx:pagename="Categoria:Lógica_matemática" wx:page_id="333607" id="wx165">Lógica matemática</a></span> | <span dir="ltr" id="wx166"><a href="/wpt/Categoria:Demonstra%C3%A7%C3%B5es" title="Categoria:Demonstrações" wx:linktype="known" wx:pagename="Categoria:Demonstrações" wx:page_id="316359" id="wx167">Demonstrações</a></span></div>
<div id="wx_languagelinks">
Outras línguas: <a href="http://de.wikipedia.org/wiki/Strukturelle_Induktion" class="external" wx:linktype="interwiki" wx:pagename="de:Strukturelle_Induktion" id="wx168">Deutsch</a> | <a href="http://en.wikipedia.org/wiki/Structural_induction" class="external" wx:linktype="interwiki" wx:pagename="en:Structural_induction" id="wx169">English</a> | <a href="http://es.wikipedia.org/wiki/Inducci%C3%B3n_estructural" class="external" wx:linktype="interwiki" wx:pagename="es:Inducción_estructural" id="wx170">Español</a> | <a href="http://pl.wikipedia.org/wiki/Indukcja_strukturalna" class="external" wx:linktype="interwiki" wx:pagename="pl:Indukcja_strukturalna" id="wx171">Polski</a> | <a href="http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B4%D1%83%D0%BA%D1%86%D0%B8%D1%8F" class="external" wx:linktype="interwiki" wx:pagename="ru:Структурная_индукция" id="wx172">Русский</a> | <a href="http://zh.wikipedia.org/wiki/%E7%BB%93%E6%9E%84%E5%BD%92%E7%BA%B3%E6%B3%95" class="external" wx:linktype="interwiki" wx:pagename="zh:结构归纳法" id="wx173">中文</a></div>
</body>
</html>
