Balanceamento (1)

175 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
175
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Balanceamento (1)

  1. 1. CEFET-MGEngenharia da ComputaçãoAED IBruna FragaElisa DanielWilliane Rosado
  2. 2.  Como foi visto na técnica Divisão e conquista,um problema poder ser solucionado com maisfacilidade se o mesmo for divido emsubproblemas. Utilizando o balanceamento, que consiste emfazer divisões em partes iguais ouaproximadamente iguais de um problema,veremos que há um contraste entre particionarem subproblemas iguais e desiguais. A utilização desta técnica, resulta em algoritmosmais eficientes.
  3. 3.  Considere o seguinte exemplo de ordenação(sem balanceamento)public class Ordenacao {public static void ordena ( int v[], int n) {for (int i=0; i< n-1 ; i++){int min=i;for ( int j=i +1; j < n; j++){if( v[j] < v[min])min=j;int x=v[min];v[min]=v[i];v[i]=x; }}}}
  4. 4.  Analisando a complexidade do algoritmo,percebe-se que ele possui notação assintóticaO(n²). Esse algoritmo pode ser visto como umaaplicação recursiva de divisão e conquista. Não é eficiente para valores grandes de n,devido à sua ordem quadrática.
  5. 5.  Para se obter um algoritmo de ordenaçãoassintoticamente eficiente, é necessário realizaro balanceamento.
  6. 6. Mergesort 1. Divida recursivamente o vetor a ser ordenadoem dois, até obter n vetores de um únicoelemento.
  7. 7. Mergesort 1. Divida recursivamente o vetor a ser ordenadoem dois, até obter n vetores de um únicoelemento. 2. Aplique a intercalação tendo como entradadois vetores de um elemento, formando umvetor ordenado de dois elementos.
  8. 8. Mergesort 1. Divida recursivamente o vetor a ser ordenadoem dois, até obter n vetores de um únicoelemento. 2. Aplique a intercalação tendo como entradadois vetores de um elemento, formando umvetor ordenado de dois elementos. 3. Repita este processo formando vetoresordenados cada vez maiores até que todo o vetoresteja ordenado.
  9. 9.  Considere o seguinte exemplo de ordenação(com balanceamento)Algoritmo MERGESORT (L, ini, fim)ENTRADA: um vetor L e as posições ini e fimSAÍDA: o vetor L em ordem crescente da posição iniaté a posição fimIniciointeiro: meio;se ini < fimmeio = ( ini + fim) /2;se ini < meioMERGESORT(L, ini, meio);MERGESORT(L, meio + 1, fim);MERGE(L, ini, meio, fim);fim {MERGESORT}
  10. 10.  O algoritmo do Mergesort possui notaçãoassintótica O(n log n). Para o problema de ordenação, o balanceamentolevou a um resultado muito superior. O custopassou de O(n²), para O(n log n).
  11. 11.  Há vários campos na área de computação emque podemos utilizar este método para obtermaior eficiência.1. Sistemas multiprocessados:Nesse sistema múltiplos processadores permitem aexecução simultânea de diversos programas, ou atémesmo que um programa seja executado por váriosprocessadores.Objetivos:Aumentar a capacidade computacional com um menor custo.Permitir o balanceamento de modo que as tarefas sejamuniformemente distribuídas sem que haja sobrecarga doscomponentes.
  12. 12. 2. ClusterCom a internet mais presente a cada dia e otráfego cada vez mais intenso, esse método foiessencial para uma expansão saudável da rede.Cluster: Conjunto de máquinas, duas ou mais nas quais sãoexecutadas aplicações requeridas por um número muitogrande de pessoas.Um cluster deve receber os pedidos de serviços de váriosclientes, fazer uma distribuição deles nas maquinas que oconstituem, sem que haja sobrecarregamento.
  13. 13. Cluster para Balanceamento de Carga• As tarefas são distribuídas o mais uniformementepossível entre os computadores. O foco é fazer com quecada computador receba e atenda a uma requisição enão, necessariamente, que divida uma tarefa com outrasmáquinas.• Nesse tipo de cluster é necessário que o procedimentoseja executado de forma a garantir um “equilíbrio” naaplicação.• O balanceamento de cargas pode ser usado em váriostipos de aplicações, mas o seu uso é bastante comum naInternet promovendo um aumento da capacidade derede, melhorando a performance de sistemas.
  14. 14. BIBLIOGRAFIAZiviani, Nivio.Projeto de algoritmos.São Paulo:Thomson,2007.

×