Arquivar

Arquivo de Autor

Passos do Algoritmo de Huffman

David A. Huffman, nascido em Ohio, formou-se em Engenharia Elétrica em 1944, sua maior contribuição para a humanidade foi à técnica computacional conhecida como o Código de Huffman, o método para compactar informações que está presente neste momento no seu Ipod, na sua câmera digital, nos modems de Internet, nas TVs de alta definição e até em invenções mais antigas como o seu telefone ou fax do seu trabalho.

Este código foi desenvolvido durante seu doutorado, em 1951, no MIT (Massachussets Institute of Technology), uma das maiores universidades tecnológicas do mundo. Aos 26 anos, o genial Huffman superou o método ensinado em aula por seu autor, o professor Robert Fano, e criou seu proprio codigo para compactar dados.

Mas o que o algoritmo de Huffman faz ?

A compressão pelo algoritmo de Huffman reduz o tamanho do código usado para representar os símbolos de um alfabeto. Símbolos do alfabeto que ocorrem frequentemente são atribuídos por codigos mais curtos. A estratégia geral é permitir ao tamanho do código variar de caracter para caracter e de assegurar que o código utilizado seja menor.

A compressão de Huffman é feita através da construção de uma árvore binária usando um simples conjunto de exemplo. Isso é feito arranjando os símbolos do alfabeto em ordem decrescente de probabilidade. Então repetidamente adicionando duas menores probabilidades e reorganizando. Este processo se repete até a soma das probabilidades dos dois últimos símbolos ser igual a 1.

Se não for obtido uma probabilidade de 1 nos dois últimos símbolos, provavelmente existe um erro no processo.

Estes diagramas mostram como a árvore de codificação associada à codificação de Huffman é construída:

FFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAEEEEEEEEEDDDDDDDDDDDDDDDDBBBBBBBBBBBBBCCCCCCCCCC
CC

nico.Huffman

fonte:
wiki
books.google

Fibra óptica

22/09/2009 [nico] 1 comentário

Você (como eu) sempre quis saber como se produz um cabo de fibra óptica?

Bom o vídeo abaixo mostra passo a passo como é o processo de fabricação desses cabos, que já são realidade na maioria das capitais do Brasil.

PC’s em uso no País !

18/09/2009 [nico] 1 comentário

Alguma vez vc já se perguntou quantos computadores existem atualmente no Brasil ? Ou quanto sera que as empresas investem no setor de TI ?

Existe uma instituição que faz isso, o Centro de Tecnologia de Informação Aplicada da Escola de Administração de Empresas de São Paulo (Eaesp), e este ano eles divulgaram a 20ª Pesquisa Anual da Fundação Getúlio Vargas (FGV).

Nessa pesquisa o Brasil atingiu 60 milhões de computadores em uso em maio deste ano, tanto no mercado corporativo quanto doméstico, sendo que ano passado a base ativa instalada era de 50 milhões de computadores.

Segundo a FGV eles mantém a previsão de que o número de computadores em uso no País deve chegar a 100 milhões ao longo de 2012, o que representará uma média de um computador para cada dois habitantes. Hoje essa média é de um computador para cada três habitantes.

A pesquisa tambem divulga o tipo do sistema operacional instalado nesses computadores, o windows está em 97% das estações de trabalho (a pesquisa não diz se são versões originais!). Já nos servidores o porcentual da plataforma da Microsoft é de 66%, e do Linux é de 19%, sendo que este subiu 1% em relação ao ano passado (muito poco, sera que é pq não precisa pagar para usar?).

fonte:  Estadão

Mitos da tecnologia em empresas

Ao longo do tempo, a tecnologia evoluiu não só em quesitos técnicos, mas também na interface com o homem. Para usar um jargão do meio, pela primeira e única vez, o software ficou mais “amigável”. Tradução: os programas de computadores estão mais fáceis de usar e são mais intuitivos. Simples, não? Até os microcomputadores, conhecidos pela sigla PC, do inglês “personal computer”, também ganharam recursos que simplificam o seu uso e facilitaram a instalação de novos equipamentos complementares, como as impressoras, sem a necessidade de chamar o amigo do amigo para realizar a “complicada” tarefa.

O último argumento usado pelas micro e pequenas empresas para evitar o uso de tecnologia em seu negócio é o custo. Com poucos recursos e sem capacidade de altos investimentos, a tecnologia sempre foi considerada um “gasto” desnecessário.

Somente uma pessoa em estado mental degenerativo teria a capacidade de acreditar que a tecnologia, quando bem aplicada, não vai ajudá-lo a reduzir custos, tornando sua empresa mais eficiente e produtiva.

Nego-me a acreditar que os cinco mitos a baixo são a razão, para que as empresa deixem de gastar ou não gastem com tecnologia.

1º Tecnologia é cara!

A afirmação deixou de ser verdadeira há muito tempo. A rápida evolução e a competição acirrada entre os principais fornecedores fazem com que os preços não parem de cair. Se a tecnologia traz benefícios para seu negócio e é usada a todo vapor, o retorno vai compensar o investimento.

2º Tecnologia é difícil!

Mesmo nos softwares mais fáceis, um pouco de conhecimento é sempre necessário. A afirmação não deixa, portanto, de ter um fundo de verdade. Mas a principal preocupação da Microsoft, responsável por 95% dos aplicativos que rodam nos computadores pessoais, é torná-los cada vez mais fáceis de usar e simplificar a instalação de periféricos, como mouses, impressoras, etc.

3º Tecnologia requer manutenção interna!

A estabilidade dos mercados faz com que as empresas dediquem suas forças aos processos em que têm expertise total. De acordo com a complexidade de sua infra-estrutura tecnológica, a terceirização pode ser bastante atraente. Há ainda soluções customizadas de serviços, disponíveis em pacotes e com custos reduzidos.

4º Tecnologia é insegura!

O crescimento da internet aumentou a possibilidade de um ataque externo. Mas procedimentos de segurança simples podem ajudar a minimizar os riscos. É importante saber que a principal ameaça vem de dentro da sua empresa. Se você treinar seus empregados, usar a tecnologia de forma adequada e definir processos de segurança, os problemas serão praticamente eliminados.

5º tecnologia é dispensável em meu negócio!

Em que planeta você vive? Nicholas Carr, ex-editor executivo da Havard Business Review, a principal revista para o mundo dos negócios, defende a tese de que a tecnologia virou uma commodity, assim como as estradas de ferro e as redes de eletricidade. Ao investir em tecnologia, você pode reduzir custos, melhorar processos e atender melhor o seu consumidor.

visto em Microsoft.com

CategoriasCuriosidade, TI, Tecnologia Tags:

Pilha em Java

20/05/2009 [nico] 1 comentário

Pilha:

A forma mais geral de uma lista permite a inserção ou eliminação de um elemento em qualquer posição na lista. Se restringirmos a ocorrência de inserção e eliminação a uma extremidade da lista, por exemplo, extremidades superiores, então temos uma estrutura de dados chamada de pilha.

Utilizando a terminologia de pilhas, operações de inserção e eliminação são comumente citadas como operações “push” e “pop”, respectivamente. O único elemento diretamente acessível de uma pilha é seu elemento superior. O elemento menos acessível é seu elemento inferior.

Desde que as operações de inserção e eliminação são executadas na mesma extremidade da pilha (por exemplo, na extremidade superior), os elementos podem ser removidos somente na ordem oposta a que foram inseridos.

Este interessante fenômeno é conhecido como LIFO. LIFO é um acrônimo para a expressão inglesa Last In, First Out que, em português significa último a entrar, primeiro a sair.

Um exemplo comum de pilha, que permite a seleção de seu elemento superior, é a pilha de pratos num restaurante. Os pratos em pilha fazem com que a pessoa tenha acesso ao prato superior, à remoção de um prato superior faz com que a pessoa tenha acesso ao próximo prato, se colocado um novo prato na pilha, esse será o primeiro a sair.

Em Java, já existe a classe para o TAD pilha, que é a java.util.Stack.

Os métodos disponíveis nesta classe, entre outros, são: push(), pop(), equivalentes a empilha() e desempilha() e peek(), equivalente a topo(), tamanho() e vazia().

Os métodos pop() e peek() lançam a exceção StackEmptyException se a pilha estiver vazia quando eles são chamados.

  • Outros métodos
    • size(): retorna o número de objetos da pilha
    • isEmpty(): retorna true se a pilha estiver vazia
    • top(): retorna, mas não remove, o objeto do topo da pilha, retornando um erro se a pilha estiver vazia

Exemplo simples:

Operação

Conteúdo da Pilha

Saida

Inserir X X -
Inserir Y X Y -
Inserir Z X Y Z -
Remover X Y Z
Inserir W X Y W -
Remover X Y W
Remover X Y
Remover   X
Remover   erro

Traduzindo a tabela em linguagem java.

import java.util.Stack;

/**

* Esta classe demonstra como funciona uma pilha em java

*

* @author Nico

*

* @since 20 MAIO, 2009

*

*/

public class TestarUmaStack {

public static void main(String[] args) {

// DECLARANDO NOSSOS ELEMENTOS/OBJETOS

String nico = “Nico”, kawano = “Kawano”, gaucho = “Gaucho”, erick = “Erick”, cris = “Cris”, junior = “Junior”, silvio = “Silvio”, jean = “Jean”;

// DECLARANDO A PILHA

Stack<String> nossaPilha = new Stack<String>();

// Passo 1: Incrementar Nico

nossaPilha.push(nico);

// Passo 2: Incrementar Kawano

nossaPilha.push(kawano);

// Passo 3: Incrementar Gaucho e Cris

nossaPilha.push(gaucho);

nossaPilha.push(cris);

// Passo 4: Decrementar elemento Cris do topo

nossaPilha.pop();

// Passo 5: Incrementar Erick

nossaPilha.push(erick);

// Passo 6: Incrementar Jean e Junior

nossaPilha.push(jean);

nossaPilha.push(junior);

// Passo 7: Substituir elemento na pilha. Jean por Silvio!

nossaPilha.set(4, silvio);

// EXIBINDO INFORMAÇÕES SOBRE A PILHA

if (nossaPilha.isEmpty()) {

System.out.println(“A PILHA ESTÁ VAZIA!”);

} else {

System.out

.println(“NOSSA PILHA DO GRUPO…\n\nElemento\tÍndice\n———————-”);

for (int i = nossaPilha.size() – 1; i > -1; i–) {

System.out.println(nossaPilha.get(i) + “\t\t” + i);

}

System.out.println(“\nNÚMERO DE ELEMENTOS: “ + nossaPilha.size());

System.out.println(“ELEMENTO NO TOPO: \”" + nossaPilha.peek()

+ “\” no índice “ + nossaPilha.indexOf(nossaPilha.peek()));

}

}

}

Resultado:

NOSSA PILHA DO GRUPO…

Elemento    Índice
———————-
Junior      5
Silvio       4
Erick        3
Gaucho   2
Kawano  1
Nico        0

NÚMERO DE ELEMENTOS:  6
ELEMENTO NO TOPO:  “Junior” no índice 5

CategoriasJava, POO Tags:,