Ao ler sobre vários algoritmos de classificação, vi mencionar que alguns são "estáveis" e outros não. O que isso significa e quais compensações estão envolvidas nessa base ao selecionar um algoritmo?
Ao ler sobre vários algoritmos de classificação, vi mencionar que alguns são "estáveis" e outros não. O que isso significa e quais compensações estão envolvidas nessa base ao selecionar um algoritmo?
Respostas:
Uma classificação estável é aquela que preserva a ordem original do conjunto de entradas, em que o algoritmo de comparação não distingue entre dois ou mais itens.
Considere um algoritmo de classificação que classifique as cartas por classificação , mas não por naipe. A classificação estável garantirá que a ordem original de cartões com o mesmo valor seja preservada; o tipo instável não.
Algoritmos estáveis preservam a ordem relativa dos elementos.
Portanto, um algoritmo de classificação estável manterá a ordem relativa dos valores que se comparam como iguais.
Considere um algoritmo de classificação em que classificamos uma coleção de pontos 2D com base em sua dimensão X.
Coleção a ser classificada: {(6, 3), (5, 5), (6, 1), (1, 3)}
Estável Classificado: {(1, 3), (5, 5), (6, 3), (6, 1)}
Regular Ordenado: Qualquer um {(1, 3), (5, 5), (6, 3), (6, 1)}
, ou{(1, 3), (5, 5), (6, 1), (6, 3)}
Quanto à troca ... bem, a classificação estável é menos eficiente, mas às vezes você precisa.
Por exemplo, quando um usuário clica no cabeçalho de uma coluna para classificar valores em uma interface do usuário, é razoável esperar que sua ordem de classificação anterior seja usada no caso de valores iguais.