Estou trabalhando para tentar particionar um gráfico triangulado em subgráficos conectados com algumas garantias sobre o número de arestas entre partições. Aqui está um exemplo de um gráfico triangulado que foi particionado em 4 "clusters":
O que eu queria originalmente era um algoritmo que pudesse criar partições de aproximadamente k triângulos (poderia haver algum erro, desde que não fosse muito grande), e consegui descobrir um (em que p é o número total de partições) que poderia encontrar essa partição. Percebi então que ter um grande número de bordas entre partições era prejudicial para a aplicação para a qual eu precisava desse algoritmo.
Idealmente, eu gostaria de um algoritmo que possa manter cada partição dentro de um intervalo de , idealmente que seja um fator constante como 2. Além disso, eu gostaria de poder fazer com que o número de inter-bordas tenha um limite superior isso é "baixo".
Além disso, outro problema que tenho é se eu tenho uma partição que possui essas propriedades e modifico o gráfico seguindo um destes procedimentos:
- Adicionando um conjunto de arestas conectando a vértices existentes
- Adicionando um vértice e um conjunto de arestas conectando ao vértice adicionado
- Removendo um conjunto de arestas
- Removendo um vértice e todas as arestas que se conectam a esse vértice
Quero poder particionar o gráfico e ainda ter cada partição com o tamanho número de arestas cortadas minimizados. (Esta é a solução pela qual estou oferecendo uma recompensa). Isso significa que, usando esse algoritmo, podemos construir qualquer partição começando com um gráfico vazio e adicionando vértices e arestas uma a uma e reparticionando.
Aqui estão algumas restrições adicionais para o problema:
- O gráfico é plano
- Cada "triângulo" é um vértice que possui arestas não direcionadas em triângulos e compartilha uma aresta com
- A partir da afirmação acima, é óbvio que cada vértice neste gráfico tem grau no máximo 3
- O gráfico está conectado
- Cada subgráfico da partição está conectado
- Cada subgrafo possui aproximadamente k vértices
- Existem no máximo arestas entre partições (arestas que contêm vértices de diferentes partições). Se você encontrar um limite semelhante para as arestas entre partições, como ou , isso também funcionará. Não tenho certeza absoluta de que o limite superior das bordas entre partições possa ser menor que portanto, se você puder provar que é impossível fazer melhor, isso também é satisfatório. 2 √ O(logn)O(n)
Estou em um ponto em que estou preso, portanto, qualquer ajuda com esse problema seria adorável. Se você consegue resolver esse problema, você é o joelhos das abelhas. Caso contrário, se você souber de algum artigo, manual ou algoritmo que possa me indicar, eu agradeceria muito.
Deixe-me saber se eu preciso esclarecer alguma coisa!
EDIT: Aqui estão algumas restrições adicionais, se isso facilitar o problema.
- Estamos lidando com triangulações restritas de delaunay
- Restrições NUNCA será um único vértice
- O gráfico criado a partir da triangulação é construído da seguinte maneira: cada triângulo é representado como um vértice. Cada aresta no gráfico corresponde a uma aresta irrestrita na triangulação. Isso significa que uma aresta restrita entre dois triângulos não aparecerá na representação gráfica da triangulação.
Outra coisa que percebi é que podemos precisar modificar para crescer à medida que cresce, caso contrário, não haverá garantias sub no número de arestas entre partições.n O ( n )