¿Por qué puedo mirar un gráfico e inmediatamente encontrar el punto más cercano a otro punto, pero me lleva O (n) tiempo a través de la programación?


122

Déjame aclarar:

Dada una gráfica de dispersión de un número dado de puntos n, si quiero encontrar mentalmente el punto más cercano a cualquier punto de la gráfica, puedo ignorar inmediatamente la mayoría de los puntos en el gráfico, reduciendo mis opciones a un número pequeño y constante de puntos cercanos .

Sin embargo, en la programación, dado un conjunto de puntos n, para encontrar el punto más cercano a cualquiera, se requiere verificar cualquier otro punto, que es el tiempo O(norte) .

Supongo que la visión visual de un gráfico es probablemente el equivalente de alguna estructura de datos que soy incapaz de entender; porque con la programación, al convertir los puntos a un método más estructurado, como un quadtree, uno puede encontrar los puntos más cercanos a k puntos en en tiempo, o inmortalizado tiempo.k log ( n ) O ( log n )nortekIniciar sesión(norte)O(Iniciar sesiónnorte)

Pero todavía no se conocen algoritmos ammortizados (que pueda encontrar) para encontrar puntos después de la reestructuración de datos.O(1)

Entonces, ¿por qué esto parece posible con una simple inspección visual?


36
Usted ya conoce todos los puntos y aproximadamente dónde están; los "controladores de software" para sus ojos ya han hecho el arduo trabajo de interpretar la imagen. En su analogía, está considerando este trabajo "gratis" cuando en realidad no lo es. Si ya tenía una estructura de datos que desglosaba las posiciones de los puntos en algún tipo de representación de octotree, podría hacerlo mucho mejor que O (n). Una gran cantidad de procesamiento previo ocurre en la parte subconsciente de su cerebro antes de que la información llegue a la parte consciente; nunca olvides eso en este tipo de analogías.
Richard Tingle

20
Creo que al menos uno de sus supuestos no se cumple en general. suponga que todos los puntos están dispuestos en un círculo con perturbaciones "pequeñas" y 1 punto adicional P es el centro del círculo. Si desea encontrar el punto más cercano a P, no puede descartar ninguno de los otros puntos en el gráfico.
collapsar

44
¡Porque nuestro cerebro es realmente asombroso! Suena como una respuesta barata pero es verdad. Realmente no sabemos mucho acerca de cómo funciona nuestro procesamiento de imagen (aparentemente masivamente paralelo).
Carl Witthoft

77
Bueno, básicamente, tu cerebro usa particiones espaciales sin que te des cuenta. El hecho de que esto parezca realmente rápido no significa que sea un tiempo constante: está trabajando con una resolución finita y su software de procesamiento de imágenes está diseñado para eso (e incluso podría estar manejando todo eso de manera paralela). El hecho de que esté utilizando cientos de millones de pequeñas CPU para hacer el preprocesamiento no lo coloca en , solo hace la operación complicada en muchos pequeños procesadores. Y no se olvide el trazado al papel 2D - que por sí solo tiene que ser al menos de O ( n ) . O(1)O(norte)
Luaan

99
No estoy seguro de si ya se ha mencionado, pero el cerebro humano funciona de manera muy diferente a un sistema informático tipo SISD von Neumann. Particularmente relevante aquí es que, según tengo entendido, el cerebro humano es inherentemente paralelo y especialmente cuando se trata de procesar estímulos sensoriales: puede escuchar, ver y sentir múltiples cosas al mismo tiempo y ser (aproximadamente, de todos modos) consciente de todos ellos simultáneamente Me estoy concentrando en escribir un comentario, pero veo mi escritorio, una lata de refresco, mi chaqueta colgada en la puerta, el bolígrafo en mi escritorio, etc. Su cerebro puede verificar muchos puntos simultáneamente.
Patrick87

Respuestas:


115

Tu modelo de lo que haces mentalmente es incorrecto. De hecho, usted opera en dos pasos:

  1. Elimine todos los puntos que están demasiado lejos, en tiempo.O(1)
  2. Mida los puntos que están casi tan cerca, en el tiempo Θ ( m ) .mΘ(m)

Si has jugado juegos como petanca (cuencos) o curling, esto debería ser familiar: no necesitas examinar los objetos que están muy lejos del objetivo, pero es posible que necesites medir a los contendientes más cercanos.

Para ilustrar este punto, ¿qué punto verde está más cerca del punto rojo? (Solo un poco más de 1 píxel, pero hay uno que está más cerca). Para facilitar las cosas, los puntos incluso han sido codificados por colores por distancia.

una nube de puntos

Esta imagen contiene puntos que están casi en un círculo, y n 10 puntos verdes en total. El paso 1 le permite eliminar todos menos m puntos, pero el paso 2 requiere verificar cada uno de los m puntos. No hay un límite a priori para m .m=10n10mmm

Una observación física le permite reducir el tamaño del problema de todo el conjunto de puntos a un conjunto candidato restringido de m puntos. Este paso no es un paso de cálculo como se entiende comúnmente, porque se basa en un proceso continuo. Los procesos continuos no están sujetos a las intuiciones habituales sobre la complejidad computacional y, en particular, al análisis asintótico.nm

Ahora, puede preguntarse, ¿por qué un proceso continuo no puede resolver completamente el problema? ¿Cómo se llega a estos puntos ¿Por qué no podemos refinar el proceso para obtener m = 1 ?mm=1

La respuesta es que hice trampa un poco: presenté un conjunto de puntos que se genera para que consista en puntos casi más cercanos y n - m puntos que están más lejos. En general, determinar qué puntos se encuentran dentro de un límite preciso requiere una observación precisa que debe realizarse punto por punto. Un proceso grueso de eliminación le permite excluir a muchos no candidatos obvios, pero simplemente decidir qué candidatos quedan requiere enumerarlos.mnmetro

Puede modelar este sistema en un mundo computacional discreto. Suponga que los puntos están representados en una estructura de datos que los clasifica en celdas en una cuadrícula, es decir, el punto se almacena en una lista para la celda ( x , y ) . Si está buscando los puntos más cercanos a ( x 0 , y 0 ) y la celda que contiene este punto contiene como máximo otro punto, entonces es suficiente verificar la celda que contiene y las 8 celdas vecinas. El número total de puntos en estas 9 celdas es m(X,y)(X,y)(X0 0,y0 0)metro. Este modelo respeta algunas propiedades clave del modelo humano:

  • es potencialmente ilimitado: siempre es posible un caso peor degenerado de, por ejemplo, puntos que se encuentran casi en un círculo.metro
  • La eficacia práctica depende de haber seleccionado una escala que coincida con los datos (por ejemplo, no ahorrará nada si sus puntos están en una hoja de papel y sus celdas tienen 1 km de ancho).

99
Además, no todos los gráficos se pueden proyectar en el plano, de modo que las distancias euklidianas coincidan con las distancias en el gráfico (por ejemplo, si los pesos de los bordes no forman una métrica).
Raphael

55
@Raphael Entendí que la pregunta se refería a la geometría computacional más que a la teoría de grafos, pero de hecho, esta es una complicación adicional.
Gilles

2
@Gilles Hecho . Acabo de aprender el término geometría computacional .
gerrit

2
Esto puede ser una cuestión de selección, puedo entender lo que estás tratando de mostrar, pero como alguien que es daltónico, "elige el verde más cercano al rojo" lleva a un montón de dudas sobre qué puntos son cuáles. Solo algo en lo que pensar en el futuro: ¡elija cualquier otra combinación de colores además del rojo / verde!
tpg2114

3
@ tpg2114 No olvides que el rojo / verde no es el único tipo de daltonismo. Mostrarlo con forma (o cualquier otro atributo que no sea el color) sería aún más inclusivo que "cualquier otra combinación de colores además del rojo / verde".
Jonathan Van Matre

42

La razón es que los datos se han colocado en una "estructura de datos" optimizada para esta consulta y que el tiempo de preprocesamiento en la preparación del gráfico debe incluirse en sus tiempos medidos, que es proporcional al número de puntos, dando un O (n) complejidad justo allí.

Si coloca las coordenadas en una tabla que enumera las coordenadas X e Y de cada punto, necesitaría un esfuerzo mental mucho mayor para calcular las distancias entre puntos, ordenar la lista de distancias y elegir la más pequeña.

Como ejemplo de una consulta que no funciona bien visualmente, sería mirar el cielo nocturno y, basándose solo en su vista y en una tabla de coordenadas de cada estrella, ubicar la estrella más cercana a la Tierra o qué signo astrológico tiene la menor distancia entre las estrellas en que consiste. Aquí necesitaría un modelo 3D con zoom y girable para determinar esto visualmente, donde una computadora consideraría que este es esencialmente el mismo problema que su original.


2
+1 - Me estaba desplazando hacia abajo buscando a alguien que hiciera exactamente este punto. La representación de los datos entrantes es importante: ¡solo intente encontrar la mediana de una lista ordenada frente a una no ordenada!
cloudfeet

21

Esta pregunta parte de una premisa defectuosa. Simplemente piensa que puede encontrar mentalmente el punto más cercano en el punto , pero de hecho, si no puede. Se siente así porque estás acostumbrado a lidiar con gráficos muy pequeños, pero pequeños ejemplos pueden ser engañosos cuando se trata de una complejidad asintótica. Si intentara hacer esto con un diagrama de dispersión con mil millones de puntos, descubriría rápidamente que no puede hacerlo en el tiempo O ( 1 ) .O(1)O(1)


8
Imagina colocar mil millones de puntos a lo largo de un círculo, pero todos un poco perturbados, por lo que tus puntos forman un anillo de aspecto borroso. Para encontrar el punto más cercano al centro a simple vista, no veo cómo podría hacerlo mucho mejor que verificar todos los puntos uno por uno.
Nick Alger

44
@NickAlger Entonces es más como O(numberOfPointsAboutTheSameDistanceFromTheTargetPointAsTheClosestPoint), lo que no necesariamente está relacionado n. De cualquier manera, creo que una respuesta a esto debería presentar posibles estructuras de datos en términos de cómo la mente humana lo percibe y consulta. Simplemente decir que no es O (1) se siente ... ¿perezoso? ¿inadecuado?
Dukeling

55
@Dukeling O (algo) se refiere al peor de los casos. Si hay diseños en los que el cerebro humano no puede hacerlo en tiempo constante, entonces definitivamente no es O (1). Si hay algún límite X donde el cerebro humano puede procesar X puntos en tiempo constante, pero no puede procesar X * 2 puntos, entonces no es O (1).
Peteris

3
@Dukeling Depende necesariamente de n, ya que en el peor de los casos es igual a n, y si ha dado n puntos arbitrarios, debe esperar que sea imposible hacerlo más rápido que las operaciones C * n.
Peteris

2
@Peteris Creo que no estamos de acuerdo con lo que significa ser "necesariamente dependiente de n" y cómo determinar el límite superior más cercano.
Dukeling

15

La superioridad de la inspección visual depende de premisas cruciales que no pueden garantizarse en general:

  • O(norte)

  • recuento : (cf. comentario de Nick Alger sobre la respuesta dada por DW) suponga un recuento de puntos que exceda el número de sus células retinianas; ni siquiera identificará todos los puntos involucrados.

  • varianza : (cf. comentario de Nick Alger sobre la respuesta dada por DW) suponga que un conjunto de puntos en una cuadrícula regular (por ejemplo, hexagonal) está sujeto a pequeñas perturbaciones aleatorias. Si estas perturbaciones se vuelven menores que la resolución de su retina (o cualquier otra cuadrícula superpuesta), no solo tendrá dificultades para detectar la distancia mínima real, sino que elegirá los pares de puntos incorrectos con una alta probabilidad.

O(norte)O(1)


1
O(norte)O(losol(norte))

O(norte)norteO(norteIniciar sesiónnorte)norte

15
  1. La computadora está resolviendo un problema diferente. Toma una lista de puntos, no una imagen rasterizada de puntos. La conversión de una lista a una imagen, es decir, "trazar" los puntos, lleva O(n)tiempo.

    ¡Rápido! Cuál es el más cercano a (1,2):

    • (9, 9)
    • (5, 2)
    • (3, -2)
    • (4, 3)
    • (0, 4)
    • (1, 9)

    Mucho más difícil, ¿verdad? Apuesto a que si hago la lista el doble de tiempo tendrías que hacer el doble de trabajo.

  2. No eres consciente de cuánto trabajo está haciendo tu cerebro. No "solo sabes" qué punto está más cerca. Su cerebro está haciendo un trabajo computacional para descubrir esa respuesta y ponerla a disposición. El cerebro trabaja en cada punto en paralelo, por lo que el tiempo para terminar se mantiene más o menos igual, pero la cantidad de trabajo requerido aún aumenta con el número de puntos.


13

Por la misma razón cuando miras un triángulo y sabes que es un triángulo, estás olvidando los muchos millones de cálculos que haces sin darte cuenta.

Redes neuronales

En efecto, usted es una red neuronal que ha sido entrenada y cargada de masas sobre masas de datos.

Tome el juego de clasificación de formas infantiles como ejemplo:

ingrese la descripción de la imagen aquí

Cuando un niño interactúa por primera vez con esto, es probable que intente insertar formas en los agujeros incorrectos, porque aún no ha entrenado su cerebro o no ha encontrado suficientes datos para construir redes. No pueden hacer suposiciones sobre bordes, tamaño, etc. para determinar qué forma se ajusta al agujero.

Esto parece obvio para usted (espero) porque ha construido estas conexiones, incluso puede pensar que es intuitivo y no tiene que desglosarlo, por ejemplo, solo sabe que el triángulo se ajusta al triángulo y no necesita aproximar el tamaño , cuenta los bordes, .etc. Esto no es cierto, has hecho todo eso en tu subconsciente, el único pensamiento consciente que tenías era que era un triángulo. Muchos millones de cálculos ocurrieron tomando una representación visual, entendiendo lo que representaba, entendiendo cuáles son los elementos individuales y luego estimando sus distancias, el hecho de que tenía una gran base de datos de información para sondear hizo esto más simple.

Tu cerebro no es binario

Los datos en los que trabaja su cerebro no son binarios (hasta donde sabemos), no son verdaderos o falsos, contienen muchos estados que usamos para interpretar los datos, también nos equivocamos a menudo, incluso cuando seguimos el correcto proceso, esto se debe a que los datos cambian a menudo. Me arriesgaría a adivinar que nuestros cerebros funcionan mucho más como lo haría una computadora cuántica donde los bits están en un estado aproximado hasta su lectura. Es decir, si nuestro cerebro funciona como una computadora, realmente no se conoce.

Por lo tanto, un algoritmo para trabajar con datos binarios no funcionará igual. No puedes comparar los dos. En su mente, está utilizando conceptos para realizar, tipos de datos ricos que contienen mucha más información, tiene la capacidad de crear enlaces donde no están definidos explícitamente; Al ver un triángulo, puede pensar en el lado oscuro de la cubierta lunar de Pink Floyd.

ingrese la descripción de la imagen aquí

Volviendo al gráfico de dispersión, no hay ninguna razón por la que no pueda hacer esto en una computadora usando un mapa de bits y midiendo la distancia desde un punto en radios crecientes hasta que encuentre otro punto. Posiblemente sea lo más cercano que pueda llegar a la aproximación de un humano. Es probable que sea mucho más lento debido a la limitación de datos y porque nuestros cerebros no necesariamente se preocupan por la complejidad de la computación y toman una ruta compleja para hacer las cosas.

No sería O (1), o incluso O (n) si n es el número de puntos, en cambio su complejidad ahora depende de la distancia lineal máxima desde el punto seleccionado hasta un límite de la imagen.

tl; dr

Tu cerebro no es una computadora binaria.



8

estás olvidando un paso importante: trazar todos esos puntos en el gráfico que estás viendo.

esta es necesariamente una operación O (n).

después de esto, una computadora puede usar un software de reconocimiento de imágenes para encontrar los puntos aproximados más cercanos al centro de la misma manera que el ojo humano puede hacerlo. Esta es una operación O (sizeOfImage) en el peor de los casos.

para que un humano haga lo mismo que la computadora, recuerde que la computadora obtiene una lista de coordenadas y solo puede ver una a la vez.


1
Si se elige una "resolución" constante, se puede usar un algoritmo que es el tiempo O (log (resolución)) por punto para trazarlos e identificar todos los puntos que están "cerca" del punto de interés. El O (log (resolución)) es vagamente análogo al hecho de que lleva más tiempo trazar puntos con precisión en el papel que hacerlo con menos precisión. Tenga en cuenta también que aumentar la resolución aumentará el costo por algoritmo de todos los puntos para eliminar puntos no candidatos, pero reducirá el número de puntos no cercanos que sobrevivan a la eliminación.
supercat

7

Mi interpretación de la pregunta:

No creo que esta pregunta deba tomarse de manera simplista como un problema de complejidad de geometría computacional. Debe entenderse mejor como diciendo: percibimos la capacidad de encontrar la respuesta en tiempo constante, cuando podemos. Lo que explica esta percepción, y hasta esta explicación y las limitaciones humanas, puede hacer una computadora también.

O(1)O(losol(norte))

Esto puede ser reforzado por el leyes de Weber-Fechner , que establece que nuestra percepción debe medirse en una escala logarítmica de la medida física real. En otras palabras, percibimos variaciones relativas en lugar de variaciones absolutas. Esto es, por ejemplo, por qué la intensidad del sonido se mide en decibelios.

O(losol(norte))Oψ(losol(losol(norte)))Oψ

Oψ(losol(losol(norte))) que para todos los propósitos prácticos es probablemente perceptualmente indistinguible de una constante, y necesariamente se le agrega un tiempo constante para comenzar el proceso de reconocimiento y reconocer el resultado.

Teniendo en cuenta las limitaciones fisiológicas.

La conclusión anterior se mantiene aún más cuando se consideran los pasos de adquisición de imágenes.

El OP tuvo cuidado de separar la construcción de una estructura de datos adecuada, "como un quadtree", que se amortiza en varias consultas.

Esto no funciona para la mayoría de las personas que no memorizan la imagen. Creo que la imagen se escanea para cada consulta, pero eso no implica escanear todos los puntos: ni la primera vez ni las consultas posteriores.

TsCunanorteTsCunanorte , más posiblemente el tiempo para cambiar la orientación y el enfoque del ojo. Teóricamente, esta operación podría tener que repetirse, lo que llevaría a un enfoque logarítmico, pero creo que en la práctica perceptiva, hay como máximo un paso adicional para enfocar la visión.

metroOψ(losol(losol(metro)))

227losol2(27)

Sin conocer las unidades reales que se utilizarán, esto simplemente muestra que la variación para el procesamiento es, en el peor de los casos, en el mismo orden que otras operaciones de tiempo constante. Por lo tanto, es bastante natural que el tiempo percibido para encontrar el punto más cercano se sienta constante. . . si determinamos el punto más cercano o solo un conjunto de los puntos más cercanos.

Sobre contraejemplos y una posible solución

Por supuesto, es fácil crear contraejemplos que dificulten la determinación del punto más cercano entre una pequeña colección de los puntos más cercanos. Esta es la razón por la cual el OP realmente está pidiendo un algoritmo que elimine rápidamente la mayoría de los puntos, excepto los más cercanos. Esta cuestión de la posible dificultad de elegir entre varios puntos cercanos se aborda en muchas respuestas, con el ejemplo paradigmático de los puntos más cercanos casi en un círculo alrededor del punto de referencia. Por lo general, las leyes de Weber-Fechner impiden distinguir pequeñas variaciones de distancia en distancias lo suficientemente largas. Este efecto en realidad puede incrementarse por la presencia de otros puntos que, aunque eliminados, pueden distorsionar la percepción de las distancias. Por lo tanto, tratar de identificar el punto más cercano será una tarea más difícil, y bien puede requerir pasos de examen específicos, como el uso de instrumentos, que destruirán completamente la sensación de tiempo constante. Pero parece claramente fuera del rango de experimentos considerados por el OP, por lo tanto, no es muy relevante.

La pregunta a responder , que es la pregunta realmente formulada por el OP, es si hay una manera de eliminar la mayoría de los puntos, excepto posiblemente por los pocos restantes que parecen tener distancias muy similares al punto de referencia.

O(losol(norte))

Rechazar el costo amortizado no permite una solución informática, ya que todos los puntos deben ser analizados. Esto subraya una gran diferencia en el poder de cómputo del cerebro y de la percepción humana: puede usar la computación analógica con propiedades que son bastante diferentes de la computación digital . Este suele ser el caso cuando miles de millones de puntos no se distinguen a simple vista, lo que no tiene la resolución de ver nada más que una gran nube con varios tonos de oscuridad. Pero el ojo puede enfocarse en una parte más pequeña relevante y ver un número limitado de puntos, que contienen los relevantes. No tiene que saber todos los puntos individualmente. Para que una computadora haga lo mismo, debería darle un sensor similar, en lugar de las coordenadas numéricas precisas de cada punto. Es un problema muy diferente.

La "mera inspección visual" es en algunos aspectos mucho más poderosa que la computación digital. Y se debe también a la física de los sensores, no solo a una mayor potencia informática del cerebro.


O(1)O(Iniciar sesiónnorte) O(1)O(1)O(Iniciar sesiónnorte)cuando resuelve una tarea más allá del reconocimiento perceptual puro, por ejemplo, ubicando un número dado en una representación gráfica de un montón binario equilibrado con nodos etiquetados. tenga en cuenta que las restricciones de percepción no importan, ya que solo inspecciona los gráficos localmente.
collapsar

norte

Oψ(losol(losol(norte)))

4

Tuvimos estudiantes en exámenes que, cuando se les preguntó qué tan rápido puede ordenar una matriz, afirmarían que las computadoras son estúpidas y necesitan n * log (n) (o peor), mientras que los humanos pueden hacerlo más rápido.

La respuesta de mi profesor fue siempre: daré una lista de 10.000 artículos. Veamos si puedes encontrar un método que sea más rápido que lo que haría una computadora.

Y luego: ¿cuántos núcleos de procesamiento están involucrados cuando intentas encontrar el punto más cercano? No es una máquina de procesador único, tiene una red neuronal, que tiene cierta flexibilidad cuando se trata de tareas como esta.


1
Además de los diversos aspectos de lo que sabe sobre los datos y los recursos que tiene disponibles cuando necesita ordenar. Por ejemplo, si sus compañeros necesitan clasificar algo que no puede caber completamente en la sala en la que se encuentran.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: es bueno entender lo importante que es la complejidad espacial "algo que no cabe completamente en la sala" 8 ^)
Zane

3

Creo que @ Patrick87 te dio la pista: tus ojos y tu cerebro son una máquina informática enormemente paralela. Algunos argumentaron que esto no explica el problema, porque para problemas arbitrariamente grandes, un número finito de procesadores paralelos no hace ninguna diferencia.

Pero lo hace aquí: como muchos insinuaron, sus ojos (y cerebro) tienen una capacidad limitada para resolver este problema; y esto se debe a que uno no puede ajustar cualquier número de puntos dentro del lapso de una mirada humana normal. Para empezar, sus ojos deben poder distinguirlos, y si hay demasiados, estarán tan cerca que sus ojos no notarán la diferencia. En pocas palabras: es rápido para puntos suficientemente buenos que caben en su vista normal, es decir, muy pocos. En otros casos fallará.

Por lo tanto, puede resolver este problema en O (1) para casos pequeños y simples que su cerebro puede procesar en un instante. Más allá de eso, no puede y, por lo tanto, ni siquiera es O ( nada ) porque lo más probable es que falle.


1

Nadie ha mencionado que este problema se puede resolver muy rápidamente en una computadora con un índice espacial. Esto es equivalente a trazar los puntos en una imagen para que sus ojos escaneen rápidamente y eliminen la mayoría de los puntos.

Hay un muy buen algoritmo de indexación utilizado por Google y otros para encontrar los puntos más cercanos llamados Geohash. http://en.wikipedia.org/wiki/Geohash .

Creo que esto igualará el concurso a favor de la computadora. No me impresionaron algunas de las respuestas que usaban el pensamiento lineal.


Θ(norte) Θ(lgnorte)

El punto es que un índice espacial lo hace más o menos tan fácil como lo es para un humano que mira una pantalla llena de puntos.
reinierpost

1

Si consideramos el caso de encontrar vecinos más cercanos en un conjunto de puntos de n dimensiones en el espacio euclidiano, la complejidad generalmente está limitada por el número de dimensiones a medida que crece (es decir, más grande que el tamaño del conjunto de datos).

O(Iniciar sesiónre-2norte)

El problema de encontrar un punto más cercano a un nodo en un gráfico tiene una expresión euclidiana cada vez que el gráfico se puede incrustar en el espacio euclidiano con una distorsión lo suficientemente pequeña. Y usando una lista de adyacencia con pesos, todavía necesitamos construir la lista de adyacencia.

O(1) complejidad . Si nuestro cerebro funciona efectivamente "como" una red neuronal, entonces esto puede explicar por qué tenemos la impresión de una "gestalt".


-1

otras respuestas son buenas, pero ¿qué tal una pregunta de contador zen que estira el razonamiento básico / premisa de la pregunta original a los extremos para mostrar alguna falla [pero también es la paradoja en el núcleo de la investigación IA ]:

si puedo pensar con inteligencia humana, ¿por qué no puedo crear una computadora que piense tan bien como un humano?

Hay varias formas de responder a su pregunta, pero básicamente, nuestros procesos de pensamiento y capacidades de percepción cerebral no son necesariamente accesibles para la introspección, y la introspección que aplicamos a ellos puede ser engañosa. por ejemplo, podemos reconocer objetos pero no tenemos forma de percibir / explicar el proceso cuasi-algorítmico que continúa para permitir esto. También hay muchos experimentos de psicología que muestran que hay sutiles distorsiones en nuestras percepciones de la realidad y, en particular, en la percepción del tiempo. percepción del tiempo .

Por lo general, los científicos piensan / conjeturan que el cerebro humano en realidad emplea algoritmos, pero funcionan de manera diferente a los computarizados, y también hay una gran cantidad de procesamiento paralelo en el cerebro a través de redes neuronales que no se pueden comparar con sensatez. algoritmos informáticos secuenciales . En los mamíferos, un porcentaje significativo del volumen total del cerebro está dedicado al procesamiento visual.

en otras palabras, los cerebros humanos son, en muchos sentidos, computadoras visuales altamente optimizadas, y de hecho tienen una capacidad que supera a las supercomputadoras más grandes del mundo en la actualidad, como en el reconocimiento de objetos, etc., y eso se debe a deficiencias (en comparación) en software / hardware construido por humanos en comparación con la biología que ha sido altamente afinada / evolucionada / optimizada durante millones de años.


O(F(norte))

-2

En términos generales, está resolviendo dos problemas diferentes y si compite en la misma competencia, la complejidad será O (1) para ambos. ¿Por qué? Hagamos la situación un poco más simple: suponga que tiene una línea con un punto rojo y n puntos verdes. Su tarea es encontrar el punto verde más cercano al punto rojo. Todo está en el gráfico. Ahora, lo que haces y lo que estás programando es básicamente lo mismo: simplemente "aléjate" (en ambas direcciones) desde el punto rojo y comprueba si el píxel que estás mirando es blanco / negro (fondo) o verde. Ahora la complejidad es O (1).

Lo interesante es que algunos métodos de presentación de datos dan respuestas a algunas preguntas de inmediato (O (1)). El ejemplo básico es extremadamente simple: solo cuente los píxeles blancos en la imagen negra (cada valor de píxel es 0 = negro o 1 = blanco). Lo que debe hacer es agregar todos los valores de píxeles: la complejidad es la misma para 1 píxel blanco y para 1000, pero depende del tamaño de la imagen: O (m), m = image.width * image.height. ¿Es posible hacerlo más rápido? Por supuesto, todo lo que tenemos que hacer es usar un método diferente para almacenar imágenes, que es una imagen integral : ingrese la descripción de la imagen aquí ahora calcular el resultado es O (1) (si ya tiene una imagen integral calculada). Otra forma es simplemente almacenar todos los píxeles blancos en array / vector / list / ... y solo contar su tamaño: O (1).


O(1)O(1)

@FrankW: ¿cuál es la complejidad de "alejarse"? No estoy tratando de decir que estás equivocado, solo quiero saberlo. Contando el tamaño de la matriz / vector / lista: en general, el tamaño de la matriz es constante, por lo que no es necesario contarlo, vector: no estoy seguro, diría que depende de la implementación (pero lo más probable en la mayoría de las implementaciones es solo el campo de un objeto, así que no hay necesidad de contarlo), enumere - tiene razón, no es O (1) - mi error.
cyriel

kkO(# #pagsyoXmils)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.