¿Cuáles son los principios o características esenciales de los algoritmos gráficos en informática?

Quizás te refieres a problemas gráficos.

Un algoritmo gráfico es una solución a un problema gráfico.

Un gráfico es un nodo que apunta a otro nodo, o varios nodos, de manera no limitada.

No es este tipo de gráfico: definición de gráfico

Pero este tipo de gráfico: ¿Qué es la densidad del gráfico?

Ideas básicas de gráficos: teoría de gráficos

Hay gráficos dirigidos y gráficos no dirigidos. Los gráficos dirigidos son fáciles de reconocer porque las líneas son flechas, lo que significa que pueden atravesarse en una sola dirección, como las calles de una ciudad.

Ahora dada esa idea: ¿qué es el algoritmo gráfico?

Primero necesitas un problema gráfico. El algoritmo sería una solución a ese problema, pero tenga en cuenta que el algoritmo significa que la solución lo hace en un número limitado de pasos, es decir, no se repite para siempre.

El que realmente me gusta: el algoritmo Dijsktra. El problema: cuál es el camino más corto para atravesar por completo un gráfico arbitrario.

La solución: Algoritmo de Dijsktra:

En resumen: los problemas gráficos tienen siempre los mismos atributos. A saber, nodos y transiciones.

Los algoritmos de gráficos no tienen los mismos atributos, excepto quizás uno: resuelven el problema en un número finito de pasos. Tal vez también lo hacen en el menor número de pasos conocidos por la humanidad.

También se podría argumentar que una vez que encuentre mejores algoritmos, las soluciones tendrán puntos de vista nuevos muy diferentes y radicales.


¡Interesante pregunta!

En primer lugar, los gráficos son matemáticamente equivalentes a las matrices: siempre que tenga una matriz cuadrática, puede interpretarla como la definición de un gráfico (donde el valor en la fila n-ésima y la columna m-ésima define la conectividad entre la n-ésima y el enésimo elemento). Si los valores en la matriz son diferentes de solo 0 o 1, tiene un gráfico ponderado. Si la matriz es asimétrica, tiene un gráfico dirigido. Si la matriz no es cuadrática, aún puede interpretarla como la matriz de adyacencia de un gráfico bipartito (los elementos representados por filas y columnas provienen de diferentes conjuntos).

Por lo tanto, no es una distinción discreta entre algoritmos gráficos y no gráficos. La pregunta es cuándo debería pensar en sus datos como gráficos y cuándo como matrices. Creo que la característica principal de los casos en los que tiene sentido pensar en gráficos es cuando la matriz correspondiente es escasa, es decir , no hay muchas entradas distintas de cero por fila y columna. Cuando piensa en cosas básicas como el recorrido de una gráfica primero en profundidad o primero en amplitud, eso no tiene sentido si llegaría a todos los vecinos después de solo una iteración. Muchos conceptos como la longitud de la ruta, los grados de los nodos, … también suponen implícitamente que no todo está conectado a todo (puede ser, por supuesto, pero estos conceptos no son muy útiles).

Sin embargo, suceden cosas interesantes al cambiar entre las dos vistas. Muchos algoritmos gráficos se pueden resolver de manera muy eficiente realizando operaciones algebraicas lineales en su matriz de adyacencia o matrices derivadas, ver, por ejemplo, agrupación espectral, también PageRank, aunque formulado intuitivamente en términos gráficos, se calcula como una operación de matriz iterada. Viceversa, puede comenzar desde una matriz y darse cuenta de que puede descubrir cosas nuevas acerca de sus datos al mirarlos como si fuera una matriz de adyacencia, aunque no tengo un ejemplo sorprendente en este momento.

En resumen, no es tan claro como podría haber esperado con su pregunta, pero en general, ver algoritmos de gráficos como algoritmos que trabajan en matrices dispersas podría ser una buena característica para distinguirlos de los demás.

More Interesting

¿Necesitamos un algoritmo 10 veces más rápido o una máquina 10 veces más rápida? Da una razón para justificar tu respuesta.

¿Cuál es la complejidad temporal de una función que calcula la altura de un árbol binario de forma recursiva? ¿Es O (N) u O (NlogN)?

¿Cuál es el mejor algoritmo para encontrar dos elementos iguales en una matriz?

¿Cuál es el "mejor" sitio para estudiar estructuras de datos durante las ubicaciones?

Como principiante, ¿cómo comenzar a codificar el árbol y el gráfico? ¿Cómo implementar la lógica de árbol y gráfico en problemas?

Dado un conjunto etiquetado de nodos, ¿podemos 'siempre' construir un árbol de búsqueda binario (BST) para ellos?

Cómo escanear una lista de números en una sola línea separada con un espacio y agregarlos a una lista en Python

Cómo encontrar la ruta más corta en un gráfico no ponderado en lenguaje C

¿Cuál es la última actualización del algoritmo SEO de Google en 2017?

¿Cuáles son los conceptos de software que todo programador debe saber?

¿Cuál es el enfoque algorítmico para este problema de hackerrank?

¿Cuál es el mejor y el último algoritmo de última generación para encontrar documentos similares?

¿Cuál es la diferencia entre el recorrido del gráfico dirigido y el no dirigido (específicamente en C)?

Cómo desarrollar un algoritmo para detectar rangos de negociación horizontales / patrones de consolidación

¿Cuál es el mejor algoritmo de aprendizaje profundo sin supervisión para aprender características de los datos de secuencia biológica?