A conexão é que, se você puder representar a estrutura subjacente ao seu problema de otimização como matróide, poderá usar o algoritmo ganancioso canônico para otimizar a soma de qualquer função de peso positivo. Se seu objetivo de otimização se encaixa nesse paradigma, você pode resolver seu problema com a abordagem gananciosa.
Exemplo
Considere o problema mínimo da árvore de extensão com pesos de borda positivos¹. Mostraremos que existe um matróide correspondente a esse problema, o que implica que ele pode ser resolvido com avidez, isto é, pelo algoritmo canônico ganancioso no referido matroide.
Seja um gráfico não direcionado com a função de custo de borda. Então, comG = ( V, E, C )c : E→R+( E, I)
Eu= { F⊆ E∣ ( V|F, F) é uma floresta } ²
é um matróide. Assim, podemos encontrar o elemento de maximizando a soma dos pesos das arestas . É uma árvore de abrangência mínima. Observe que o algoritmo ganancioso canônico é chamado algoritmo de Kruskal neste contexto por razões históricas.Euc′( e ) = (maxe ∈ Ec ( e ) ) - c ( e )
Provas
Para mostrar: é um matróide. Temos que verificar três propriedades :( E, I)
- ∅ ∈ I - o gráfico vazio é uma floresta.
- Se , todo subconjunto de estiver em - dada uma floresta arbitrária, a remoção de arestas não pode introduzir ciclos. Portanto, todo subgráfico de uma floresta é uma floresta.F∈ euFEu
- Para cada ,implica que existe para que - considere uma floresta arbitrária e uma menor . Suponha que não exista tal . Isso significa que todas as arestas em estão em cortes induzidos por arestas em ³. Como existem apenasesses cortes, pelo menos um par de arestas em compartilham um corte ; isso contradiz que é uma floresta.F1 1,F2∈ eu|F1 1| > |F2|e ∈F1 1∖F2F2∪ { e } ∈ IF1 1F2eF1 1F2|F2|F1 1 F1 1
Para mostrar: qualquer elemento com peso máximo em é uma árvore de cobertura mínima de . Primeiro de tudo, é claro que tem peso máximo de acordo com ; portanto, por definição de , também tem peso mínimo de acordo com . Agora, tudo o que temos a mostrar é que é uma árvore de abrangência: se não fosse, não seria o máximo no sentido de que ainda poderíamos adicionar arestas (com peso positivo), contradizendo o peso máximo.F∗EuGF∗c′c′c
- Podemos lidar com pesos de borda negativos adicionando o peso mínimo mais um a todos os pesos.
- Uma floresta é uma união disjunta de árvores.
- Um gráfico contém um ciclo se e somente se houver um corte com mais de uma aresta.