¿Cómo podría seleccionar aleatoriamente los bordes en un gráfico para conectar cada nodo [C]?

La pregunta es un poco confusa, pero la entiendo así:

Desea crear un gráfico aleatorio con N nodos y M bordes (donde M es aleatorio) y quiere asegurarse de que su gráfico aleatorio esté conectado.

Primero, debe asegurarse de que M sea al menos igual a N-1. Si M es más pequeño que N-1, no hay forma de que puedas hacer un gráfico conectado. Dicho esto, lo primero que tienes que hacer es crear un árbol .

Es fácil crear un árbol aleatorio, puede hacer un algoritmo iterativo que realiza pasos N-1 y, en cada paso, conecta dos nodos que aún no están conectados agregando un borde entre ellos. De esta manera, después de los pasos N-1, tendrá un árbol, que ya es un gráfico conectado. Para verificar si dos nodos están conectados, puede usar una estructura de datos de búsqueda de unión para obtener la máxima eficiencia.

Ahora que tiene un árbol con bordes N-1, puede llenar su árbol con bordes aleatorios (entonces ya no será un árbol, pero obviamente sigue siendo un gráfico conectado) hasta que tenga exactamente M bordes.

Un borde en un gráfico se define por los dos vetices que conecta, así que use una lista de adyacencia o una matriz de adyacencia o alguna otra estructura estándar para los gráficos. Incluso puede crear una clase de borde personalizada y trabajar desde allí. Mi recomendación es comenzar a usar estructuras.

More Interesting

¿Qué significa importar en Python? ¿Puedo hacer mi propio algoritmo sin usar importar?

Cómo hacer que mis veranos sean productivos cuando mi interés radica en la codificación competitiva

¿Cuál es la relación entre el análisis probabilístico y el algoritmo aleatorio?

¿Cómo puedo encontrar la ruta más larga de un gráfico bidireccional utilizando el algoritmo BFS?

¿Estoy perdiendo el tiempo implementando la estructura de datos elementales (Stacks, Queues y LinkedLists) como parte de la preparación para una entrevista de prácticas en Google?

¿Cuáles son algunas de las lagunas en el algoritmo de reserva de entradas de irctc?

¿Cómo ayuda la selección de estructuras de datos apropiadas para diseñar mejores algoritmos?

¿Qué es un algoritmo para generar todas las combinaciones posibles de un conjunto dado de letras (por ejemplo, 'a', 'b', 'c', 'd', 'e')?

¿Cuál es el libro más legible y efectivo para aprender introducción a los algoritmos informáticos?

¿Qué debo hacer en mis vacaciones de verano, dado que soy estudiante de informática (1er año)?

¿Los algoritmos de aprendizaje y las estructuras de datos son muy importantes para la informática y la programación?

¿Por qué el número total de respuestas en mi cuenta de Quora disminuyó repentinamente en 10?

¿Cuál es la aplicación del problema N-Queens en el mundo real? ¿Es aplicable en problemas de localización o enrutamiento?

¿Hay algún algoritmo de dirección de camino legible para humanos?

¿Hay algún patrón abstracto para medir qué tan bueno eres en algoritmos?