Gerando entradas para algoritmos gráficos de teste aleatório?
Ao testar algoritmos, uma abordagem comum é o teste aleatório: gere um número significativo de entradas de acordo com alguma distribuição (geralmente uniforme), execute o algoritmo nelas e verifique a correção. As estruturas de teste modernas podem gerar entradas automaticamente, dada a assinatura dos algoritmos, com algumas restrições.
Se as entradas são números, listas ou seqüências de caracteres, gerando essas entradas diretamente. As árvores são mais difíceis, mas ainda fáceis (usando gramáticas estocásticas sem contexto ou abordagens semelhantes).
Como você pode gerar gráficos aleatórios (eficientemente)? Normalmente, escolher gráficos uniformemente aleatoriamente não é o que você deseja: eles devem estar conectados, planares ou sem ciclo, ou preencher qualquer outra propriedade. A amostragem por rejeição parece subótima, devido ao conjunto potencialmente enorme de gráficos indesejáveis.
Quais são as distribuições úteis para analisar? Útil aqui significa que
é provável que os gráficos testem bem o algoritmo em questão e
eles podem ser gerados de forma eficaz e eficiente.
Eu sei que existem muitos modelos para gráficos aleatórios, então eu apreciaria algumas dicas sobre quais são melhores para a geração de gráficos nesse sentido.
Se "algum algoritmo" for muito geral, use algoritmos de localização de caminho mais curto como uma classe concreta de algoritmos em teste. Os gráficos para teste devem ser conectados e bastante densos (com alta probabilidade ou pelo menos em expectativa). Para o teste, a solução ideal seria criar gráficos aleatórios em torno de um caminho mais curto para que possamos saber o resultado desejado (sem ter que empregar outro algoritmo).
Essa pergunta foi desencadeada por essa .
Gráficos aleatórios com topologia de mundo pequeno
Em gráficos com topologia mundial pequena , os nós são altamente agrupados, mas o comprimento do caminho entre eles é pequeno. Uma topologia como essa pode dificultar os problemas de pesquisa, pois as decisões locais se propagam rapidamente em todo o mundo. Em outras palavras, os atalhos podem enganar heurísticas. Além disso, foi demonstrado que muitos problemas de pesquisa diferentes têm uma pequena topologia mundial.
Watts e Strogatz [1] propõem um modelo para pequenos gráficos mundiais . Primeiro, começamos com um gráfico regular. A desordem é introduzida no gráfico religando aleatoriamente cada aresta com probabilidade . Se , o gráfico é completamente regular e ordenado. Se , o gráfico é completamente aleatório e desordenado. Valores de produzem gráficos que não são completamente regulares nem completamente desordenados. Os gráficos não têm um pequeno topologia mundo para e .p = 0 p = 1 0 < p < 1 p = 0 p = 1ppp = 0p=0 0p=1p=10<p<10<p<1p=0p=0 0p = 1p=1
Watts e Strogatz começar a partir de uma estrutura de anel com nodos e vizinhos mais próximos. Um nó é escolhido da rede uniformemente aleatoriamente e uma borda reconectada é reconectada a ele. Se a religação criar uma aresta duplicada, ela permanecerá intocada. Para gráficos grandes e esparsos, eles exigem , onde garante que o gráfico permaneça conectado.k n ≫ k ≫ ln ( n ) ≫ 1 k ≫ ln ( n )nnkkn ≫ k ≫ ln( N ) » 1n≫k≫em⁡(n)≫1k ≫ ln( N )k≫em⁡(n)
O modelo de Watts e Strogatz é um pouco popular, mas tem algumas desvantagens. Walsh [2] investiga os efeitos da randomização e estratégias de reinicialização em gráficos gerados usando o modelo. Há também um artigo de Virtanen [3], que aborda outros modelos motivados pela necessidade de modelagem realista de sistemas complexos.
Gráficos planares aleatórios simples
A geração de gráficos planares simples aleatórios em vértices uniformemente aleatórios pode ser feita com eficiência. O número de gráficos planares com vértices, , pode ser determinado usando funções geradoras. O valor de para é e , respectivamente. Como os números são muito complicados, não se espera encontrar uma fórmula fechada para eles. Giménez e Noy [4] fornecem uma estimativa assintótica precisa para o crescimento de : onde ennnngngngngn1 ≤ n ≤ 91≤n≤91 , 2 , 8 , 64 , 1023 , 32071 , 1823707 , 1639478481,2,8,64,1023,32071,1823707,1639478482040242029120402420291gngn
gn∼ g⋅ n- 7 / 2γnn ! ,gn∼g⋅n-7/2γnn!,
ggγγsão constantes determinadas analiticamente com valores aproximados e .g≈ 0,42609g≈0,42609γ≈ 27.22687γ≈27.22687
A prova do resultado leva a um algoritmo muito eficiente de Fusy [5]. Fusy fornece um gerador aleatório de tamanho aproximado e também um gerador aleatório de tamanho exato de gráficos planares. O algoritmo de tamanho aproximado é executado em tempo linear, enquanto o algoritmo de tamanho exato é executado em tempo quadrático. Os algoritmos são baseados na decomposição de acordo com níveis sucessivos de conectividade: árvore binária do gráfico planar conectado 2-conectado 3-conectado .→→→→→→→→
Os algoritmos operam convertendo uma decomposição de um gráfico plano em um gerador aleatório usando a estrutura dos amostradores de Boltzmann por Duchon, Flajolet, Louchard e Schaeffer [6]. Dada uma classe combinatória, um amostrador Boltzmann desenha um objeto de tamanho com probabilidade para , onde é certo parâmetro real ajustado pelo usuário. Além disso, a distribuição de probabilidade está espalhada por todos os objetos da classe, com a propriedade de que objetos do mesmo tamanho têm a mesma probabilidade de ocorrer. Além disso, a distribuição de probabilidade é uniforme quando restrita a um tamanho fixo.nnxnxnxx
Para uma introdução leve, consulte uma apresentação de Fusy .
[1] DJ Watts e SH Strogatz. Dinâmica coletiva de redes de 'pequeno mundo'. Nature, 393: 440-442, 1998 .
[2] Toby Walsh. Pesquise em um mundo pequeno. Anais da 16ª Conferência Conjunta Internacional sobre Inteligência Artificial (IJCAI-99-Vol2), páginas 1172-1177, 1999 .
[3] Satu Virtanen. Propriedades de modelos de gráficos aleatórios não uniformes. Relatório de Pesquisa A77, Universidade de Tecnologia de Helsinque, Laboratório de Ciência da Computação Teórica, 2003 .
[4] O. Giménez e M. Noy. Enumeração assintótica e leis de limite de gráficos planares, arXiv math.CO/0501269. Um resumo extenso apareceu em Matemática Discreta e Ciência da Computação Teórica AD (2005), 147-156 .
[5] E. Fusy. Geração quadrática e linear de gráficos planares, Matemática Discreta e Ciência da Computação Teórica AD (2005), 125-138 .
[6] P. Duchon, P. Flajolet, G. Louchard e G. Schaeffer. Amostrador de Boltzmann para a geração aleatória de estruturas combinatórias. Combinatorics, Probability and Computing, 13 (4-5): 577-625, 2004 .
+1 (00) por mencionar a amostragem de Boltzmann, IMHO o mais poderoso cálculo automático de geração aleatória !!