Código Natural/Requisitos e motivações: mudanças entre as edições

m
(sections order)
Linha 29: Linha 29:


== Problemas na representação textual baseN ==
== Problemas na representação textual baseN ==
A tabela abaixo, listando códigos em sua ordem natural (lexicográfica da expressão ''bitString''), ilustra problemas da Base4 e a solução Base4h, bem como a solução ''hbit''.
A tabela abaixo, listando códigos em sua ordem natural (lexicográfica da expressão ''bitString'') de até 8 bits, ilustra problemas da Base4 e Base16.


:{| class="wikitable"
:{| class="wikitable"
!(size,value) !!BitString !! Base4 !! Base4h  !! hbitBitstring !! hbit
!(size,value) !!BitString !! Base4 !! Base16
|-
|-
| (1,0)|| <code>0</code> || '''?''' || G || <small><code>10</code></small> || 2
| (1,0)|| <code>0</code> || '''?''' || '''?'''
|-
|-
| (2,0) || <code>00</code> || 0 || 0 || <small><code>100</code></small> || 4
| (2,0) || <code>00</code> || 0 || '''?'''
|-
|-
| (3,0) || <code>000</code> || '''?''' || 0G || <small><code>1000</code></small> || 8
| (3,0) || <code>000</code> || '''?''' || '''?'''
|-
|-
| (4,0) || <code>0000</code> || 00 || 00 || <small><code>10000</code></small> || 16
| (4,0) || <code>0000</code> || 00 || 0
|-
|-
| (5,0) || <code>00000</code> || '''?'''|| 00G || <small><code>100000</code></small> || 32
| (5,0) || <code>00000</code> || 00'''?''' || 0'''?'''
|-
|-
| (6,0) || <code>000000</code> || 000 || 000 || <small><code>1000000</code></small> || 64
| (6,0) || <code>000000</code> || 000 || 0'''?'''
|-
|-
| (7,0) || <code>0000000</code> || '''?'''|| 000G || <small><code>10000000</code></small> || 128
| (7,0) || <code>0000000</code> || 000'''?''' || 0'''?'''
|-
|-
| (8,0) || <code>00000000</code> || 0000 || 0000 || <small><code>100000000</code></small> || 256
| (8,0) || <code>00000000</code> || 0000 || 00
|-
|-
| (8,1) || <code>00000001</code> || 0001 || 0001 || <small><code>100000001</code></small> || 257
| (8,1) || <code>00000001</code> || 0001 ||01
|-
|-
| (7,1) || <code>0000001</code> || '''?'''|| 000Q || <small><code>10000001</code></small> || 129
| (7,1) || <code>0000001</code> || 000'''?''' || 0'''?'''
|-
|-
| (8,2) || <code>00000010</code> || 0002 || 0002 || <small><code>100000010</code></small> || 258
| (8,2) || <code>00000010</code> || 0002 ||02
|-
|-
| (8,3) || <code>00000011</code> || 0003 || 0003 || <small><code>100000011</code></small> || 259
| (8,3) || <code>00000011</code> || 0003||03
|-
|-
| (6,1) || <code>000001</code> || 001 || 001 || <small><code>1000001</code></small> || 65
| (6,1) || <code>000001</code> || 001 || 0'''?'''
|-
|-
| (7,2) || <code>0000010</code> || '''?'''|| 001G || <small><code>10000010</code></small> || 130
| (7,2) || <code>0000010</code> || 001'''?''' || 0'''?'''
|-
|-
| (8,4) || <code>00000100</code> || 0010 || 0010 || <small><code>100000100</code></small> || 260
| (8,4) || <code>00000100</code> || 0010 || 04
|-
|-
| (8,5) || <code>00000101</code> || 0011 || 0011 || <small><code>100000101</code></small> || 261
| (8,5) || <code>00000101</code> || 0011 || 05
|-
|-
| ... || ...  || ... || ... || ... || ...
| ... || ...  || ... ||...
|}
|}


A coluna "''hbitBitstring''" é relativa à representação das ''bitStrings'' em formato "hidden bit", definido em {{xref|KraEtAll2019}}. Consiste em acrescentar o <code>1</code> na frente da ''bitString'', para que não lhe cortem os zeros à esquerda, ao interpretá-la como número inteiro positivo (em formato decimal na coluna ''hbit'').
Sempre que ''size'' for impar, não haverá como representar em Base4; para Base16 ''size'' precisa ser múltiplo de 4.


A coluna "Base4" é a tentativa ('''frustrada''') de representar as ''bitStrings'' com o algoritmo da [[wikipedia:Quaternary numeral system|notação posicional numérica da ''Base 4'']]. '''A coluna "Base4h" é a inovação''' proposta em {{xref|KraEtAll2019}}, que adaptou o algoritmo para expressar códigos ao invés de  números, permitindo zeros a esquerda e quantidade variável de dígitos.
As interrogações na coluna "Base4" destacam a tentativa '''frustrada''' de representar as ''bitStrings'' com o algoritmo da [[wikipedia:Quaternary numeral system|notação posicional numérica da ''Base 4'']], mesmo permitindo zeros a esquerda. Os dígitos da Base4 tradicoinal usam necessariamente 2 bits, sendo indefinido o dígito restante quando a quantidade total é impar: <code>0</code>, <code>000</code>, <code>0000001</code>, etc. possuem comprimento impar. Analogamente, como a Base16 requer 4 bits a cada dígito, fica sem representação para diversas ''bitStrings''.  
 
:<small>Nota. Conjuntos finitos de códigos naturais sempre podem ser expressos como conjuntos de ''hbits'', portanto através de números naturais. O conjunto de todos os Códigos Naturais todavia é infinito, e neste caso particular (com infinitos elementos), a representação ''hbit'' não é permitida pelo [[wikipedia:Cantor's theorem|Teorema de Cantor]]. Portanto, matematicamente, ''size-value'' é um tradutor mais rigoroso para expressões em <math>\mathbb{N}</math>.</small>


=== Tamanho do problema ===
=== Tamanho do problema ===
2 435

edições