Una explicación simple de la simplicidad. Capítulo 1: Teóricamente simple

Una explicación simple de la simplicidad.


imagen
CAP con áreas que tendremos que visitar para responder la pregunta PRINCIPAL.

Prólogo


A menudo escuché consejos: hazlo más fácil.

¿Y qué significa simple? Cuando decimos que el objeto X es simple, ¿cuáles son nuestras expectativas para X? Cuando decimos que algo es más fácil que otro, ¿cómo lo evaluamos?

Que es más fácil:
¿"Una pequeña oración de cinco palabras" o la palabra "desoxirribonucleico"?
"6 * 5" o "481"?

Más o menos:
Tienes una pantalla de configuración. Cinco de ellos se relacionan con el cronograma, los otros cinco con notificaciones. ¿Necesita crear elementos separados de "programación" y "notificación" en el menú principal? ¿O dejar los 10 puntos en una pantalla? ¿Qué será más fácil para el usuario?

Puedes decir que esto es subjetivo. Que esto está determinado por una especie de "sentido de simplicidad", que para una persona algo puede ser simple y para otro complejo.

Bien, entonces dime por qué la maestra pasa tiempo explicando algo más fácil. ¿Por qué editar el texto, tratando de hacerlo más fácil? ¿Por qué los programadores pasan tiempo revisando el código tratando de descubrir qué solución es más fácil de entender y ampliar?

Si la simplicidad de alguna manera se correlaciona con nuestra evaluación, entonces la mejor estrategia es la persuasión. Hagamos que los lectores crean que el texto es simple. O colegas, creían que nuestra decisión no fue difícil.

¿Cambiará cualitativamente su interacción con el resultado de nuestro trabajo?

No

Su texto no será más fácil de leer porque se considera simple. No será más fácil trabajar con su código, incluso si todos a su alrededor piensan que su complejidad es la misma que la de un taburete.

Si en una entrevista le dijeron que la compañía tiene un código limpio y una buena documentación y lo creía, entonces esto no afectará la simplicidad de trabajar con el código.
Además, incluso si todo el departamento cree que el código está bien escrito y hay bases, esto tampoco afectará el resultado. Su creencia en su código puede estar equivocada.

Si el código era espagueti, será espagueti. Si la "documentación" son los comentarios del formato "aquí agregué 2 números", el código no tiene documentación.
Y no hay deseos, confianza, etc., no ayudarán aquí.

Esto no funciona por la misma razón ( ru , en ) por la cual no puedes darle a 5 de tus amigos 1 cupcake si solo tienes 2 cajas de 2 cupcakes cada una. Incluso si va a meditar a toda la compañía durante un año que 2 + 2 = 5, esto no cambiará la triste situación con los pastelitos.

Una vez mas Hay un objeto, y algunas de sus características pueden hacerte pensar ( ru ) que es simple. Y si mañana su evaluación cambia y se detiene en la marca "difícil", al objeto no le importará.

Se puede concluir que la simplicidad o complejidad no depende de nuestras expectativas. Por el contrario, el objeto determina qué característica le daremos.

Quería entender qué tipo de objeto espero ver en realidad, si estoy convencido ( ru ) de que es simple. Y viceversa, qué características de un objeto real me hacen pensar que es simple.
Por qué Bueno, ¿tal vez esto me facilitará la vida?)

Si estás leyendo por primera vez
Estadísticas
Tiempo de lectura: ~ 30 minutos.
Número de caracteres: ~ 25k.

Como leer un articulo
General
No tengo autoridad en tus ojos. Intencionalmente no proporciono información sobre mí. Me gustaría que leyeras este artículo como si fuera escrito por un estudiante de primer año. En cierto sentido, lo es.

Si encuentra un momento incomprensible o controvertido, escríbalo. Esto te ayudará a mejorar este artículo.

Y en ningún caso no me creas. No quiero que mis palabras te convenzan de mi inocencia. Quiero que su significado te convenza de su verdad.

Sobre convenciones
  1. Tabla de contenidos. Cada capítulo comenzará con él. Enumera brevemente los problemas discutidos en el capítulo y proporciona enlaces para navegar a las subsecciones relevantes.
  2. Enlaces a recursos externos. Se presentan como * palabra o frase * (enlaces con código de idioma ) o enlaces regulares. Traté de hacerlo para que tuvieras una opción, leer una fuente rusa o inglesa. Desafortunadamente, no siempre tuve éxito en encontrar ambos. Esto será especialmente notable en el segundo capítulo. Runet es pobre en información relevante sobre neurobiología.
  3. Spoiler "Brevemente". Se encuentra inmediatamente después del título de la subsección del capítulo. Su propósito es simplificar el trabajo con el artículo si ya lo ha leído. Puede usarlo para leer rápidamente un artículo. Pero ten cuidado! En primer lugar, es posible que no entienda lo que está escrito allí sin leer la subsección misma. Esta es una tesis condensada, y no el camino ( ru , en ) hacia ella. En segundo lugar, aún más peligroso: puede parecerle que comprende todo. Lo que se entiende por falso y por qué surge se explicará en los siguientes capítulos.
  4. Spoiler "ES TIEMPO DE MATEMÁTICAS". Se utiliza para no asustarte con cálculos matemáticos. Duplica la información que antes se presentaba en forma de texto, pero de una manera más formal.



Información general
Sobre la serie
Una explicación simple es simple: es una serie de artículos unidos por una pregunta común: "¿Qué es" simple "desde un punto de vista humano?"

Por el momento, se planean 3 capítulos:

  • Teóricamente simple: este capítulo está dedicado a la redacción de la pregunta y las definiciones principales asociadas con ella. Estas aqui
  • Machine Ex Homo es un capítulo en el que observamos nuestra conciencia, comenzando desde el nivel de comportamiento superior y terminando con conexiones neuronales en nuestro cerebro. El capítulo ha sido escrito y está siendo editado.
  • Solo lectura: está dedicado a las personas que leen cualquier modelo, ya sea esquemas, código, gráficos, texto. Este será el primer capítulo práctico de nuestra serie, aquí aplicaremos nuestros conocimientos y veremos cómo debe estructurarse la información para facilitar su comprensión. Dirígete al proceso de escritura.

Esta no es una lista completa de preguntas a las que me gustaría encontrar una respuesta. Pero quiero comenzar con ellos.

Se publicará un artículo separado sobre por qué incluso trato con este problema. Digamos simplemente sobre la motivación del autor y cómo ve esta serie. Este artículo será escrito después de los primeros tres capítulos.

¿Por qué apareció este artículo?
Me he encontrado con esas frases muchas veces: "Escribe el texto más fácil" o "Haz la decisión más fácil".
A veces escuché la palabra "solo" como argumento en una disputa: "¡Lo hice porque es más fácil!". Muy a menudo los oponentes intentaron demostrar que "tienen más fácil", y algunos argumentos extraños llevaron a esto.

Pero cuando le pregunté a la gente qué significa en su opinión "simple", escuché:
"Esto es subjetivo". O "Esto es un sentido común". O "Bueno, para cada persona de diferentes maneras".
Estaba confundido por el hecho de que personas muy inteligentes discuten durante mucho tiempo sobre algo que no pueden determinar con precisión y considerar subjetivo. Después de todo, si es aromatizante, como las preferencias musicales, ¿por qué pasan tanto tiempo? Repito, se trataba de personas inteligentes, y no pasaban el tiempo hablando de las preferencias musicales de los demás.

Pensé mucho en esto, y un año después, un simple pensamiento vino a mi mente: ¿qué pasa si la simplicidad es una característica de un objeto que aún se puede medir? Esto podría resolver todas las disputas y ahorrar una gran cantidad de tiempo. Y envuélvelo ...

¿Por qué su explicación simple toma 3 capítulos? ¿No podría ser más corto?
Porque la realidad es compleja. Y la complejidad de este artículo depende directamente de la complejidad de esa parte de la realidad que describe.

Esta serie es el resultado de miles de horas de búsqueda y combinación de información. Y también cientos de miles de horas dedicadas por personas cuyo trabajo utilicé para ella.

Pasarás un par de horas leyendo toda la serie. Una docena, para ser sincero, seguirás todos los enlaces.

He reducido la cantidad de tiempo y esfuerzo que dedicará para obtener la respuesta a nuestra pregunta cientos de veces. Y le ahorró el tiempo necesario para configurarlo correctamente.

No estoy seguro de si esta es la mejor explicación posible. Mi trabajo aún no está terminado. Quizás en el proceso entienda cómo mejorarlo. Por el momento, esta es la explicación más simple que tengo.


Capítulo 1. Teóricamente simple


En este capítulo, veremos los siguientes temas:


Al final del capítulo, hablaremos un poco sobre la Navaja de afeitar de Occam ( Blade Runner ). Un artículo sobre simplicidad se vería extraño sin mencionar este principio.

1.1 Secuencia de preguntas


Brevemente
Las preguntas que no limitan las posibles respuestas son inútiles.
La característica "simple" puede tener dos significados:

1) elemental
2) Simple para alguna acción

Estamos interesados ​​en el segundo.

Nuestra siguiente pregunta: ¿Cómo evaluar la complejidad de una acción y cómo relacionarla con un objeto?

Nuestra investigación comienza con una pregunta. Hacer una pregunta correctamente es muy importante. Una pequeña digresión:

- Bien, pensamiento profundo, ¿cuál es la CONDICIÓN PRINCIPAL DE SIMPLICIDAD?
- Necesito pensarlo.
...
...
N millones de años después ...
- < 42.

// Basado en un hermoso libro

Tenemos una respuesta, pero no da nada. Toda la información sobre él está contenida en la pregunta, pero la pregunta no era demasiado específica. No podemos probar que < 42 - Realmente la condición principal y no puede mostrar lo contrario.

La pregunta debería limitar el alcance de las posibles respuestas.

"¿Qué es simple?" - No es una pregunta muy específica. Vamos a aclararlo. Al comienzo del artículo, ya hemos hecho parte de este camino:

Cuando decimos que el objeto X es simple, ¿qué esperamos de él?

Según mis observaciones, hay dos casos principales:

  1. X es un objeto que no se descompone en sus componentes. Aquí la palabra "simple" puede ser reemplazada por la palabra "elemental".
    imagen
    Esto es un ladrillo Y, en cierto modo, es simple.
  2. X es simple de realizar la acción que necesitamos con él. Por ejemplo, un sofá es simple si queremos acostarnos y complicado si necesitamos elevarlo al noveno piso.

El caso cuando el objeto es elemental es comprensible. Pero, ¿qué pasa si estamos interesados ​​en la complejidad en el contexto de la acción?

Pensemos en ello. Realizamos acciones con el objeto.

Hay tres entidades principales en esta oración:

  • Acciones: una descripción de lo que está sucediendo.
  • Ejecutantes de acciones: nos estamos escondiendo bajo la palabra.
  • Los objetos son con lo que se lleva a cabo la acción.

Entonces nos interesan las siguientes preguntas:

  • ¿Cómo evaluar la simplicidad de una acción dependiendo del objeto con el que se realiza?
  • ¿Cuál es la relación entre la acción y su ejecutor?

Las contestaremos a continuación.

1.2 Facilidad de uso


Brevemente
Actuamos por analogía con la complejidad algorítmica.

La complejidad de nuestra acción es la suma de las complejidades de las acciones invertidas en ella.

La secuencia de acciones se llama algoritmo.

La acción tiene un resultado: este es un cambio en el estado del sistema en el que se realizó la acción.

Las acciones y los objetos se pueden interconectar utilizando el concepto de una interfaz. Una interfaz es un objeto que almacena información sobre qué acciones son posibles con un objeto que lo implementa.

A diferencia de la complejidad algorítmica, no solo podemos encontrar operaciones elementales, y tendremos que considerar el desempeño de nuestras acciones.

Nuestra siguiente pregunta es ¿cuál es el impacto del artista en las acciones?

Veamos la acción.

La simplicidad de acción es algo que depende inversamente de su complejidad. Cuanto más compleja es la acción, menos simple es, es obvio. Llegamos a la siguiente pregunta:

¿Cómo determinar la complejidad de la acción?


¿Qué podemos hacer con la acción? ¡Podemos dividirlo en una secuencia de otros! La acción "leer el artículo" se puede dividir en: "leer el primer párrafo", "leer el segundo", etc. Ellos, a su vez, se descomponen como "lee la primera oración", "lee la segunda" ...

imagen

De esta manera, llegamos a acciones cuya diferencia de complejidad no será importante para nosotros y no dependerá del objeto con el que se realiza (por ejemplo, leer una carta). Llamaremos a tales acciones elementales.

Entonces, la complejidad de la acción para un objeto particular se puede medir en las acciones elementales en las que se divide.

Las acciones son equivalentes cuando se dividen en la misma secuencia de acciones.

¿Qué más caracteriza la acción?

Algoritmo


Descripción de la secuencia de acciones que constituyen otra acción, lo llamaré algoritmo ( ru , en ) .

El algoritmo se puede describir genéricamente, por ejemplo:
Lectura: lee oraciones hasta que se acabe el texto.
De esta forma, la lectura es aplicable a muchos textos.

Sin embargo, como comprenderá, el número de acciones de "leer oraciones" dependerá del número de oraciones en el texto.

Resultado


Las acciones se realizan por una razón, conducen a algo. ¡Que nuestras acciones tengan resultados!

El resultado es un cambio en el estado del sistema en el que ocurrió la acción. Presionó el interruptor, y su transición al estado "encendido" y la luz que se encendió en la cocina es el resultado de esta acción. Lees una palabra y el resultado es un cambio en el estado de tu cerebro.

Diferentes acciones pueden conducir al mismo resultado.

imagen

Comunicación con objetos


De vuelta a los objetos. Como hemos dicho, puedes realizar diferentes acciones con ellos. Necesitamos una manera de entender para qué acciones esta o esa entidad está "destinada".

Comenzaré con un ejemplo.

"¿Y cómo arrastro esta maleta?"
- ¡Tiene un bolígrafo a un lado!

El asa es una tira de cuero en el exterior de la maleta, que está clavada con remaches. Pero a nosotros en este caso no nos importa. Nos preocupa que haya un objeto en la maleta que pueda agarrar.

Todos esos objetos los llamaremos manijas. Pueden estar en la taza, puerta, maleta o cubo.

imagen

Hemos llegado a la conclusión de que tenemos dos descripciones de bolígrafo del ejemplo:

  1. Como tiras de cuero clavadas en los remaches de una maleta.
  2. Como concepto para un sujeto a abordar.

El primero es una descripción de la implementación ( en ) .

El segundo es la descripción de la interfaz.

Una interfaz es un objeto que almacena información sobre cómo puede interactuar con un objeto que lo implementa.

¿Por qué son necesarios? Es simple: la mayoría de las veces no nos interesa cómo se implementa un objeto.
Cuando queremos encender la luz, estamos buscando un interruptor, y no importa cómo funcione, solo es importante para nosotros que podamos encender / apagar su estado.
Cuando vemos un botón, ya sabemos que se puede hacer clic en él.
Cuando nos dicen que en algún lugar hay un bolígrafo, ya sabemos que puede llevarlo.
Y es muy conveniente.

Resumen


Una acción es una secuencia de otras acciones que definen su algoritmo. El resultado de la acción es algún tipo de cambio de sistema.

La complejidad de una acción es igual al número de acciones elementales de su algoritmo para un objeto en particular.

La relación entre objetos y acciones determina la interfaz del objeto. Almacena información sobre qué acciones se pueden realizar con el objeto.

Nuestra siguiente pregunta:
¿Cuál es la relación entre la acción y su ejecutor?

1.3 Subjetividad objetiva


Brevemente
Para evaluar correctamente la complejidad de un objeto en una situación con diferentes ejecutores de acciones, podemos establecer nuestras acciones para cada artista específico o grupo de ejecutores.

Nuestra siguiente pregunta es cómo calcular la complejidad ahora.

Puede notar razonablemente:

“¡Pero si realiza las mismas acciones, los resultados pueden ser diferentes! Si un profesor de física puede leer rápidamente un artículo sobre teoría de cuerdas y entender todo, entonces no lograré nada con el mismo enfoque. Y para obtener un resultado similar, tengo que buscar definiciones a través de la palabra, leer otros artículos y dedicar mucha más acción ".

Este es un buen punto. Tengo una respuesta para eso.

Como cualquier tarea, la nuestra tiene condiciones iniciales. Si los cambia, cambia la tarea misma. Y esto lleva al hecho de que su implementación requiere diferentes acciones.

Estás leyendo un artículo Supongamos que lees un par de páginas y las dejas de lado. Ahora, para que se lea el artículo, debe dedicar menos acción. ¿Pero ha cambiado la complejidad del artículo en sí? No La acción que realizará con él ha cambiado. Fue: "leer el artículo", se convirtió en: "hojear el artículo hasta el momento en que terminé y leer hasta el final".

¿Qué debemos hacer con las acciones? Arreglaremos el resultado deseado. Como recordamos, se puede llegar de diferentes maneras.

Además, podemos dividir a los artistas en aproximadamente los mismos grupos. Hay un número limitado de tales grupos, si no tenemos un número infinito de artistas.

Ahora para cada grupo, describimos las acciones que lo conducirán al resultado deseado.

Tenemos un conjunto de acciones para cada uno de los grupos de artistas. ¿Pero qué hacer ahora con la complejidad?

1.4 Probablemente solo


Brevemente
En una situación con varios artistas, podemos calcular la expectativa matemática de la complejidad del objeto. Para hacer esto, debe evaluar la probabilidad de que los diferentes artistas realicen acciones.

Teorema de Bayes ( ru , en ) .

La siguiente pregunta: ¿cómo describir los objetos con los que trabajamos?

Tenemos un conjunto de acciones. Cada uno de ellos pertenece a un determinado grupo de artistas. Sabemos cómo calcular la complejidad de cada una de estas acciones para cada objeto específico.

Pero, ¿qué pasa si tratamos de establecer la probabilidad de que el artista ingrese en uno de los grupos?
El problema se convierte en una tarea teórica clásica.

Tenemos la magnitud de la complejidad de la acción.Tenemos la probabilidad de realizar cada una de las acciones por una persona aleatoria.

Podemos encontrar el "promedio" de nuestra complejidad. Esta es la llamada expectativa matemática ( ru ) . Para hacer esto, necesitamos multiplicar cada complejidad de la acción con el objeto por la probabilidad de que ocurra.

¿De dónde obtener estas probabilidades y cómo dividir a los artistas en grupos si aún no sabe quién realizará acciones específicas con el objeto? Buena pregunta!

Su consideración está más allá del alcance de nuestro artículo, pero daré un ejemplo interesante en mi opinión.

Usted es un autor Y su tarea es escribir un artículo en un sitio que tenga secciones temáticas. Cuando publiques un artículo, aparecerá en el feed general y en el feed de su "sección". Las secciones tienen suscriptores, representan un porcentaje de la audiencia del sitio. El feed compartido se muestra a todos. Suponemos que los suscritos a una sección entienden su tema, pero no los firmados, no.
Deje que nuestro artículo sea sobre física. Hemos analizado la audiencia y sabemos que el 3% de la audiencia del sitio está suscrito a la sección "física". Aprendimos que la probabilidad de que un suscriptor de esta sección ingrese un artículo de ella es del 80%. También aprendimos que la probabilidad de visitar un artículo del feed general es del 5%.

¿Quién es nuestro lector potencial y debemos "optimizar" el artículo para una persona que no está suscrita a la sección "física"? En otras palabras, ¿cuál es la probabilidad de que nuestro artículo sea leído por una persona versada en física?

Entonces, atención, esta probabilidad es ... Alrededor del 33%.

Un poco más de dos tercios de nuestros lectores potenciales no entienden la física, y debemos tener esto en cuenta.

Como sucedioEn resumen: una pequeña probabilidad de visitar un artículo de una persona con conocimientos de física se ve compensada por su pequeño número. Una pequeña posibilidad de visitar un artículo de un feed común comienza a desempeñar un papel importante en nuestra evaluación. ¿Quieres saber más sobre esto? Aquí hay un enlace a un buen artículo sobre el teorema de Bayes ( ru , en ) .
Si quieres consultar:

ES TIEMPO DE MATEMÁTICAS:
3% , 80% . — 0.03*0.8 = 0.024 = 2.4%.

, - = . «» , . , = 0.05*0.03*0.2 = 0.0003, 0.03%.

5% , 4.97%

. (2.4% + 0.03%) .
(2.4+0.03)/(2.4+4.97+0.03) = 0.328.
: ~33%

Hablamos de las acciones y de quienes las ejecutan. Es hora de pasar a la última pregunta.
A menudo usamos la palabra objeto, pero no nos da ninguna información al respecto. Necesitamos alguna descripción, lo suficientemente abstracta para que podamos aplicarla a muchas entidades, y lo suficientemente informativa para que podamos trabajar con ella.

¿Cómo describir los objetos con los que trabajamos?

1.5 Sistematización de modelado


Brevemente
.

— , .

— , ( ).

Decidí tratar de describir genéricamente textos, tablas, diagramas ... etc. ¿Pero cómo hacerlo?

Retrocedamos un paso y veamos cómo sucede su "creación", tal vez esto nos ayude.

Nosotros escribimos el texto. Tenemos una cierta idea, la formulamos en palabras y la escribimos. Además, la idea no solo puede ser en forma de otras palabras. Podemos describir una imagen, música, objetos matemáticos.

Estoy escribiendo codigo. Tengo requisitos que traduzco al código. Se pueden expresar verbalmente o representar una imagen, por ejemplo, un boceto de la interfaz.
Hacemos un diagrama. Tenemos algunos objetos, las relaciones entre las cuales describimos con este esquema.

Hay algo en común en estos procesos. Tenemos algún tipo de sistema. Lo traducimos a otro sistema, sin usar necesariamente los mismos "términos".

Me parece que la palabra "Modelado" es adecuada para describir este proceso.

Entonces, un modelo es un sistema que describe otro sistema usando la notación (términos) dada.

Esta definición lleva a una pregunta razonable:

¿Qué es un sistema?


Un sistema es una colección de algunos componentes. Se define por el conjunto de sus posibles estados y su estado actual. Componentes del sistema A menudo llamaré objetos.
Pueden ser elementos (algo predefinido) y otros sistemas que consisten en estos elementos. Todavía hay cosas como las conexiones: aparecen cuando queremos limitar o determinar los posibles estados de un objeto en función de otros.

Un ejemplo:
Hay un sistema de 2 monedas. Uno de ellos está en el estado de "águila", el otro está en el estado de "colas".
"Águila" y "colas" son elementos de nuestro sistema.

Una moneda es un subsistema que consta de los elementos "caras" y "colas" y puede estar en uno de estos estados. Para la primera moneda:

imagen

suponga que no podemos voltear monedas y, por lo tanto, realizar cambios en el sistema. En este caso, nuestro sistema puede describirse como:

imagen

Si podemos lanzar monedas, entonces nuestro sistema se describe como:

imagen

Hay dependencias entre algunos sistemas. Supongamos que el estado de la segunda moneda no puede ser igual al estado de la primera.

Entonces, el conjunto de estados posibles de la moneda 2, teniendo en cuenta nuestra restricción, son todos los estados posibles anteriores, excepto el que se encuentra en la moneda 1.

imagen

En este caso, podemos decir que el estado de la moneda 2 determina el estado de la moneda 1.

Ahora veamos qué sucede si cambiamos el conjunto de estados posibles de las monedas agregando un "borde" allí.

Podemos hacer todos los pares para los estados de las monedas 1 y 2.

imagen

En este caso, estamos hablando de limitar los posibles estados de la moneda 2.

ACTUALIZACIÓN


Creé una implementación de un ejemplo de moneda en Java. Aquí está el repositorio . Además, muestra cómo calcular la complejidad si lanzas una moneda para una acción elemental.

ES TIEMPO DE MATEMÁTICAS:
S — .
E(S) — .
V — .
e — .
: S=e=E(S)={E(S1),E(S2),E(Sn)},SkS
Si Sk — , , .. .
: S=(V,e),V={E1(S)En(S)},eV .
.

, , , .

:
\ {S_j ... S_k \} cuyo estado determina el conjunto de estados posibles Si .
Toma el producto cartesiano X=V(Sj)...V(Sk) - obtenemos muchos conjuntos de estados ordenados x=(En(Sj),...,Em(Sk)) .
Poner Y=V(Si),y=Et(Si) .
Toma muchos pares ordenados a=(x,y) enXY .
Si por lo mismo x son lo mismo y - condición determinada x .
Si por lo mismo x varios y , entonces la condición es limitada.

PS
Por cierto, puedes probar que teniendo solo dos elementos (0 y 1, por ejemplo), puedes describir cualquier sistema cuyo número de objetos sea contable. Siempre que pueda crear secuencias de elementos de forma ilimitada. En mi opinión, este es un hecho interesante.

Me inspiraron los artículos sobre teoría de sistemas ( ru ) y autómatas abstractos ( ru ) . Esta versión de la descripción matemática del concepto de "sistema" es ligeramente más corta que la que encontré.

De vuelta a las modelos


Llamamos al modelo otro sistema, que es el primer mapeo. En general, se puede construir a partir de otros elementos. El modelo del sistema es el mapa, el sistema en sí es el territorio ( en ) . Nadie se molesta en construir modelos de otros modelos. Puede dibujar un mapa del mapa ( en ) .

Intentemos construir modelos.

Comencemos con los clásicos: la caja negra.
Tiene: "entrada", "salida" y cuadro. Usted indica los componentes que desea cambiar para obtener el resultado como "entrada", los componentes que representan el resultado como "salida" y el resto como un cuadro negro. Tal modelo no describe las dependencias internas del sistema, pero las oculta. No sabemos cómo se obtiene el resultado.

imagen

Este enfoque se usa a menudo en casos en los que queremos estudiar el funcionamiento de un sistema, pero al mismo tiempo no podemos "abrirlo". Por ejemplo, en psicología. Le damos pruebas a la gente, ellos las resuelven. No sabemos lo que está pasando en la cabeza de las personas en este momento. Pero, después de haber recopilado suficientes datos, puede describir la caja del dispositivo, lo que dará resultados similares. En la parte de Machine Ex Homo, miramos esto con más detalle.

Ahora crearemos un modelo que muestre el conjunto completo de componentes y sus posibles estados.

Vives en la antigua Grecia. Tu vecino Zeno ( ru ) ya te tiene. Este hijo de Aidov irrumpe en su casa todas las noches con otro misterio de explosión cerebral ( ru ) , y después de eso pasa una noche de insomnio pensando. Necesitas dormir y para esto necesitas callarlo al menos por un par de días.

La última vez recurrió a una historia sobre Aquiles corriendo tras una tortuga. Durante esta noche, tus ojos se posaron en uno de los cubos. Se me ocurrió una idea interesante: examinar su aporía con más detalle, utilizando cubos y piedras.

Desea hacer posible que descubra la posición de Aquiles y la tortuga en relación con el punto de partida, en cada paso de la tortuga. Tenemos: una tortuga que camina, Aquiles, que es 10 veces más rápido que una tortuga. Y sus posiciones iniciales: 1000 pasos y 0 pasos.

Nuestro modelo aún no sabe cómo representar números. Y en él es absolutamente imposible distinguir dónde está Aquiles, dónde está la tortuga, dónde está el camino.

La representación de los números naturales es simple : toma un cubo, pon el número de piedras igual a este número.

Ahora podemos describir la velocidad y el camino. En un cubo que indica la velocidad de Aquiles habrá 10 piedras. En el cubo para la velocidad de la tortuga - una piedra. Ahora pasemos a los "cubos del camino" . Ponemos mil piedras en la tortuga, dejamos a Aquiles vacío. Cuando la tortuga da un paso, cambiamos las piedras de la velocidad al camino. ¿Ya terminaste?

Aún no No tenemos pintura para firmar cubos. Solo piedras. ¿Cómo manejar esto?

Alternativamente, podemos poner la "velocidad" del cubo de tortuga a la derecha de su "cubo de camino". Haz lo mismo con los cubos de Aquiles. Y empuja hacia atrás los cubos de la tortuga. Ahora sabemos que en la combinación "dos cubos": el cubo derecho es de alta velocidad y el izquierdo está viajando.

Miras dos grupos de dos cubos. Para saber cuál de los grupos de Aquiles tiene que subir, mire en el cubo, cuente las piedras que contiene, recuerde que la velocidad de Aquiles es de 10 pasos y haga una conclusión sobre la pertenencia de los cubos a Aquiles. ¿Y si queremos hacer algunos cambios y hacer que la velocidad de Aquiles sea igual a la velocidad de una tortuga? ¡Entonces nuestra forma de verificar si Aquiles generalmente deja de funcionar!

Por lo tanto, frente a los cubos de velocidad y trayectoria, pondremos un "cubo de nombre". Ahora se ha convertido en lo más correcto. Y dejemos que nuestra regla se vea así: si el cubo del nombre está vacío, entonces los cubos que siguen son tortugas. Y si hay una piedra, entonces este grupo de cubos significa Aquiles.

imagen
No dibujé piedras en S, pero creo que está claro que para el primer paso el cubo de Aquiles está vacío, y la tortuga contiene 1000 piedras.

Te alegras Ahora Zenon tendrá que pensar mucho sobre por qué decidió que podría continuar para siempre el proceso de división de piedra. Al menos realmente lo esperas.
Desafortunadamente, esto no lo ayudó a mejorar su sueño. Zeno realmente no vino la noche siguiente, pero ahora tú mismo estás sumido en tus pensamientos. ¿Llegará el momento en que las piedras no se puedan dividir ( ru ) ?

Mire, para cada paso, tenemos algún tipo de estado de cada uno de los objetos que estamos considerando. La posición de Aquiles corresponde a un cubo, las tortugas al otro. Para velocidades, la situación es similar. Nuestro modelo describe completamente todos los estados posibles de todos los objetos del sistema simulado.

El texto también es un modelo del sistema. Los términos en este caso son palabras. Se definen por su significado, o la multitud de significados, que está limitada según el contexto.
Nuestras sensaciones también son un modelo que nuestro cerebro crea sobre la base de la información que proviene del exterior.

En resumen, te encuentras con modelos todo el tiempo.

¿Todavía recuerdas por qué todos hicimos esto? Por si acaso: dimos una definición para el modelo, luego para calcular su complejidad. Ha llegado el momento, veamos cómo se puede aplicar esto.

Eres un diseñador de UX. Su tarea: hacer la página de configuración de la aplicación. Sabes que no cambiarán en el futuro. Hay diez en total: cinco gráficos y cinco configuraciones de notificación.

Puedes dejarlos a todos en una pantalla. También tuvo la idea de que puede hacer elementos de "programación" y "notificaciones" en la primera pantalla, y cambiar a la pantalla correspondiente con cinco configuraciones.

imagen

Supongamos que nuestro usuario tiene muy poca memoria y el hábito de leer de arriba a abajo. Pero al mismo tiempo, sin embargo, es lo suficientemente inteligente como para no cometer un error en la sección, en el caso en que agrupamos las opciones. No lee los nombres de las pantallas y va directamente a los elementos del menú.

Tenemos solo 10 configuraciones, se pueden mostrar en la pantalla con una lista, y el usuario simplemente toca el elemento deseado. Creemos que el usuario no necesita desplazarse por la hoja en este caso. Por otro lado, si el usuario necesita configuraciones desde el final, será más fácil para él encontrarlas, ya que no tendrá que leer la lista completa, podrá saltarse la mitad de los puntos que no necesita.

¿Qué modelo nos dará una interacción más simple?

Acciones que un usuario puede realizar con un elemento de la lista: leer y meter en él. Traducido al idioma de la interfaz: el elemento del menú tiene las propiedades de legibilidad y pokeability. Todos los puntos son cortos, por lo que se descuida la diferencia en la dificultad de leerlos. Asumimos que las acciones de "empuje" y "lectura" son elementales en nuestro contexto. Su complejidad es 1.

Esperamos que el usuario tenga la misma probabilidad de requerir cualquiera de los elementos. No tiene sentido tomar ninguno de ellos.

Por supuesto, ya tienes algún tipo de presentimiento sobre la respuesta. Le sugiero que lo escriba, así como que escriba su confianza en que su respuesta es correcta. Por ejemplo, en una escala del 1 al 10, donde 10 es absolutamente seguro, 1 no lo es en absoluto. Necesitará estos datos para compararlos con el resultado. Bajo el spoiler "Decisión" habrá una encuesta. Desafortunadamente, el habr no permite hacer encuestas en ninguna parte del texto, por lo que el enlace lleva a los formularios de Google. Allí puede revisarlo y ver estadísticas sobre los resultados generales.

Le aconsejo que tome un bolígrafo, un trozo de papel, abra la calculadora y calcule la dificultad usted mismo. Y solo entonces abre el spoiler.

Solución:
Si el usuario necesita el segundo elemento, el algoritmo de sus acciones se ve así:
Lea el primer párrafo -> lea el segundo -> toque el dedo y la dificultad, respectivamente: 2 + 1 = 3.
Para encontrar la complejidad promedio, necesitamos encontrar la complejidad de la navegación a cada uno de los elementos, agregarlos y dividirlos por 10.
Para elementos en una pantalla: ((1 + 1) + (2 + 1) + (3 + 1) + (4 + 1) + (5 + 1) + (6 + 1) + (7 + 1) + ( 8 + 1) + (9 + 1) + (10 + 1)) / 10 = 6.5
Ahora pasemos a la complejidad de la opción del submenú. Para encontrar la opción deseada, primero debemos seleccionar la sección deseada y tocarla. Para el primer elemento, las acciones se ven así:
Lea el nombre de la primera sección -> poke -> lea el nombre del primer párrafo -> poke.
Dificultad 4.
Vamos a calcular honestamente:
((2 + 1 + 1) + (2 + 2 + 1) + (2 + 3 + 1) + (2 + 4 + 1) + (2 + 5 + 1) + (3 + 1 + 1) + ( 3 + 2 + 1) + (3 + 3 + 1) + (3 + 4 + 1) + (3 + 5 + 1)) / 10 = (4 + 5 + 6 + 7 + 8 + 5 + 6 + 7 + 8 + 9) / 10 = 6.5

¿Son lo mismo?

...
...
...

Honestamente, cuando se me ocurrió este ejemplo, esperaba una respuesta diferente. Me pareció que el método con agrupaciones en esta tarea es mejor.

Como prometí, puede participar en la encuesta y ver las estadísticas sobre las respuestas. Y no utilice el hecho de que puede enviar múltiples respuestas. No quiero obligarlo a iniciar sesión en su cuenta de Google para que le resulte más conveniente responder y ver el resultado, y a cambio le pido que no interfiera con la recopilación de estadísticas.

Entonces, si dejamos el ejemplo igual, pero consideramos un número diferente de puntos? 4 y 4, 3 y 3, 6 y 6?

Nuevamente, te sugiero que lo hagas tú mismo. Sugerencia: lea sobre la suma de la progresión aritmética y haga una ecuación, dependiendo del número total de puntos.

A continuación se encuentra solo la respuesta, por lo que si desea saber cómo resultó, debe trabajar un poco.

La respuesta es:
Si tiene 5 puntos en cada sección, las dificultades serán iguales.
Con 6 y más, la opción dividida ganará.
Con 4 o menos, la opción de una lista ganará.


Inserté este ejemplo en el artículo en la etapa final de edición. Para mí era importante resumir de qué estábamos hablando. Enlace información de capítulos anteriores de una manera comprensible. Para que puedas imaginarlo fácilmente y tratar de usar lo que hablamos.

Estaba equivocado Cuando escribí este ejemplo, pensé que sabía cuál sería la respuesta. Y ahora estoy bastante sorprendido. No, eso no es cierto. Cuando honestamente realicé todos los cálculos, el resultado me golpeó muy duro. En mi cabeza, sucedió algo como lo siguiente:

- * Al unísono * ¿ESTAMOS ERROR?

Y envuélvelo ...
- * Voz 1 * ¿Qué? Que tan! ¡Yo, tu madre, una desarrolladora de aplicaciones móviles! Y a juzgar por las críticas de mis colegas, ¡soy un buen desarrollador! ¡Mi competencia en este asunto no me causa muchas dudas!

- * Voz 2 * Bueno, sí. ¿Y qué?

- * Voz 1 * Sí, veo estas aplicaciones día y noche. Leí un montón de pautas. Ya he hecho cientos de estas listas. ¡Tengo suficientes calificaciones en mi campo para corregir los errores de nuestros diseñadores!

- * Voz 2 * Sí, ¿y luego qué?

- * Voz 1 * ¡Escribí este maldito artículo! ¡La mayor parte de mi trabajo es facilitar que otras personas interactúen con mis decisiones! ¡He estado haciendo esto por años! No solo durante las horas de trabajo, sino que casi todo es gratis. ¡Mi experiencia ha excedido por mucho tiempo las 10 mil horas banales!

- * Voz 2 * Chico, en realidad yo también soy tú. No dijiste nada nuevo, ve al grano.

- * Voz 1 * Concluyo que mi ejemplo es sintético. No refleja la realidad, todo será diferente en ella y, por lo tanto, la respuesta, que sugerí primero, será correcta. Mi experiencia me ha permitido tener en cuenta mucho más de lo que era en este ejemplo.

* Se encienden sirenas y lámparas rojas *

- * Voz desde los altavoces * Esa parte de su conciencia que hemos configurado para detectar patrones erróneos en el pensamiento es hablar. Errores notados: el efecto del exceso de confianza , la confirmación del sesgo , la percepción selectiva . Se reconoció el patrón de apelación a la autoridad , pero esta información aún se está verificando. Debido al peligro de autoengaño, se le ordena respirar más profundo y beber té.

- * Voz 1 * ¡Sin autoengaño! ¡Sabes que todo lo que dije lo consideramos cierto!

- * Voz 2 * Y sabes que hay una gran diferencia entre la realidad y tu opinión sobre lo que debería ser.

- * Voz 1 * Bueno, bliiiiiin, de nuevo estas conferencias.

- * Voz 2 * Imagina que crees que la gente sabe volar. ¿Te salvará cuando saltes del techo?

- * Voz 1 * No puedo. Veo que otras personas no vuelan, por lo que no haré una conclusión tan idiota sobre mí. Y en general, estás hiperbolizando.

- * Voz 2 * Estás loco. O te drogaron. O te pusieron un traje ideal de realidad virtual, pasaste 5 años en él y toda la gente allí voló, tú mismo sabías cómo volar, tu cerebro se adaptó y "sabe" cómo hacerlo. Nuestros pensamientos, sensaciones, expectativas y, en general, somos el estado de nuestro cerebro. Al menos esa es nuestra hipótesis de trabajo. Y sabemos que hay situaciones que son mucho más extrañas que la confianza en la posibilidad de un vuelo. Recuerde el libro "El hombre que llevó a su esposa por un sombrero".

- * Voz 1 * Bien, los cerebros realmente pueden fallar, pero en tu ejemplo realmente me caeré, incluso si pienso en el vuelo que estoy volando. Si tengo suficiente tiempo, notaré que estoy volando por el camino equivocado, pero será demasiado tarde.

- * Voz 2 * Ok, y ahora volviendo a la sesión informativa. Je, genial juego de palabras. Se te ocurrió este ejemplo. Sabías sobre sus reglas. Sabías que lo simplificaste mucho, en comparación con la realidad. Sabías cómo resolverlo. Y cometiste un error en tu suposición inicial.

- * Voz 1 * ¡No soy yo! Hice una elección intuitiva, ¡ya sabes cómo funciona!

- * Voz 2 * Y sabes que esto a menudo no funciona correctamente. Y aquí hay otra prueba para ti.

- * Voz 1 * ¿Y mi último argumento? Después de todo, esto es de hecho una aproximación, y en realidad todo será diferente.

- * Voz 2 * Este argumento es cierto. En realidad, todo será diferente. Solo de esto no se deduce que tenías razón.

Imagínese: está comenzando a acercar un ejemplo a la realidad. Considera honestamente la relación de las complejidades de las acciones para "empujar" y "leer", realiza un estudio de cómo las personas miran la pantalla, qué parte del nombre en esta lista es suficiente para que entiendan que este no es el punto.
Complementas este ejemplo con una gran cantidad de condiciones, se vuelve cientos de veces más complicado.
Lo sentimos, pero en este caso, la probabilidad de obtener la respuesta correcta "por intuición" es mucho menor que el ~ 50% que tiene una elección aleatoria.
¿Estás tan seguro de que la realidad estará de tu lado? Por qué Demuéstralo.

- * Voz 1 * ¡Sí, no estoy seguro! Solo ...

- * Voz 2 * Difícil. Es difícil admitir que te equivocaste, lo sé. Pero entiendes por qué lo necesitamos. El hecho de que esta situación haya ocurrido solo indica que somos un freno y aprendemos más lentamente de lo que quisiéramos. Pero sabemos qué hacer.

- * Voz 1 * Relectura simple de la verdad , ¿o qué?

- * Voz 2 * Muy buena opción. Siempre nos tranquiliza en tales situaciones. También puedes respirar profundamente. Y sí, descubrimos esta situación en menos de 1,5 minutos. Vi lo rápido que funcionó el sistema de detección de errores? Creo que merecemos un pastel. Él no está en el estante, hay un maldito cubo potencial , pero lo compraremos para nosotros.

- * Voz 1 * Y sin embargo, es interesante lo que sucederá en realidad ...

- * Voz 2 * ¿Has olvidado por qué estamos escribiendo un artículo?

...
...
...

Pido disculpas por una digresión y un ejemplo tan voluminosos. Quizás no esté listo para seguir leyendo y quiera pensarlo nuevamente. Y es una buena elección.

Al principio hay una tabla de contenido, puede marcar el artículo y volver rápidamente a este lugar.

¿Has decidido continuar? Luego, tenemos el último tema de los que quería plantear.

1.6 Blade Runner


Brevemente
La navaja de Occam y la probabilidad de una hipótesis.

La navaja de Occam en términos de simplicidad del sistema.
Denote la complejidad del cambio en Cy complejidad del sistema hasta cómo C y despues como C .
k=(CC)/Cy .
Si k Más de 1 es un buen cambio.
Si k menos de 1 es un cambio aceptable, pero sin pagar.
Si k menos de 0 es un cambio muy malo.

Si suponemos que la complejidad aumenta con el número de objetos en el modelo, y que ya tenemos un cierto conjunto de modelos, obtenemos que la mejor opción es un modelo con un número mínimo de objetos, que es muy similar a la redacción de la Navaja de Occam.

Lo más probable es que conozcas la Navaja de Occam, pero por si acaso, te recordaré:
"Las nuevas entidades no deberían ser atraídas a menos que sea absolutamente necesario".

En general, este principio se interpreta de la siguiente manera: de todas las hipótesis, la más probable es la que se describe en el subprograma más corto (o, más simplemente, el que es más corto) ( ru , en1 , en2 ) .

Cómo se ve en la vida real:
Si encendió la luz y la luz se encendió, entonces las hipótesis pueden ser las siguientes:

  1. El interruptor cerró un circuito eléctrico y la corriente pasó a través de una bombilla.
  2. El interruptor pateó al pequeño gnomo, que conectaba los cables, como resultado de lo cual el circuito se cerró y la corriente atravesó la bombilla.
  3. El interruptor dio una patada al pequeño gnomo, que empujó el carrito en el que estaba sentado el pequeño dragón, que estaba asustado por una llama, que derritió la soldadura, que conectó los cables, como resultado de lo cual el circuito se cerró y la corriente atravesó la bombilla.

De estas hipótesis, es preferible una que contenga menos entidades sin un gnomo.Si, al encender la bombilla, escuchó un juramento silencioso del interruptor, la segunda hipótesis es preferible, porque la primera no explica por qué el interruptor jura, y la segunda contiene entidades redundantes.

Seré honesto Cuando escuché por primera vez de la Navaja de Occam, no pensé en hipótesis. Y su vaga redacción en forma verbal me llevó a la idea de que este es un principio general: reduzca el número de entidades que están en su sistema y todo será genial.

Estaba equivocado .

Pero cuando tuve una descripción de la simplicidad del sistema, me di cuenta de cómo corregir mi interpretación incorrecta de este principio. Y hacer algo útil de eso.

Tenemos un sistema antes y después de algún cambio.

Si la diferencia en complejidad antes y después es mayor que la complejidad del proceso de hacer el cambio, este cambio está justificado. Se entiende que el cambio no afectó el resultado (al menos la parte que necesitamos). Llamémoslo ... Una condición necesaria para la simplificación.

Una vez más: la

simplificación esperada del sistema después del cambio debería ser mayor que la complejidad del cambio en sí.

Si denotamos la complejidad del cambio paraC y , la complejidad del sistema hasta cómoC y despues comoC entonces obtenemos:

C - C > C y .
También podemos expresar algunos análogos de eficiencia para nuestro cambio.
k = ( C - C ) / C y .
Si k mayor que uno es un buen cambio kosher correspondiente a la condición de simplificación necesaria.
Si k es menor que 1, pero mayor que 0; esto significa que usted simplifica el sistema, pero gasta más esfuerzo que obtener un beneficio.
Si k es menor que 0, entonces esto le indica que no vale la pena hacer tal cambio. Te complicas ¿Por qué es necesario? Bueno, por ejemplo, usted actúa en condiciones en las que tiene un tiempo limitado y le gustaría priorizar los cambios que desea realizar. Cambios con grandes

k debe considerarse primero.

Un ejemplo:

Tenemos dos textos, uno con un ejemplo del otro sin él.

Por un lado, aumentamos el volumen del texto, lo que lo complica. Pero, por otro lado, gracias a esto, algunos lectores no buscarán en Google un "ejemplo de la navaja de afeitar Occam", que es una acción más complicada que solo leer. Si en nuestra estimación habrá muchos de esos lectores, entonces la introducción de un ejemplo simplificará nuestro artículo.

No debemos olvidar que también tomamos algunas medidas para describirlo, y que tenían su propia complejidad. Si pasamos demasiadas acciones, y la simplificación no fue suficiente, la introducción de nuestra esencia "no vale la pena".

Hmm, ¿cómo está todo esto conectado con la Navaja de Occam?

Supongamos que ya tenemos varios sistemas. Y su complejidad depende directamente del número de entidades (en el mundo real, esto no siempre es cierto, como ya descubrimos). Los resultados de las acciones con estos sistemas nos convienen.

Como el sistema ya existe, entoncesC y0 (no es necesario que haga nada para realizar cambios en el sistema). Tomemos un sistema con un número mínimo de entidades y calculemosk en relación con otros sistemas. Lo entendemosk será igual a menos infinito. Desde el punto de vista de la simplicidad, en tales condiciones, elegir un sistema diferente del que contiene el menor número de objetos es una solución infinitamente estúpida. Esto nos dice que de todos los sistemas, debemos elegir el que contenga la menor cantidad de objetos. Hm.Sospechosamente similar a la navaja de Occam.

¿Qué más se puede describir con esta condición?
Por ejemplo, puede evaluar cuándo vale la pena aplicar varias prácticas de mejora de código y cuándo no tiene sentido.

De hecho, si escribe una tarea en una universidad, cuyo código se leerá una vez (o no se leerá en absoluto, pero solo verá cómo funciona), entonces no debe preocuparse de que se lea bien.

Pero si está escribiendo para un proyecto OpenSource, y cientos de personas trabajarán con su código, o escribirán su proyecto que planea desarrollar, debe cuidar su calidad.

Si está escribiendo un compendio, debe evaluar si lo necesitará en el futuro. Si el profesor solo verificará su disponibilidad y toda la información es más fácil de encontrar en Google, ¿por qué complicarla?

Si está escribiendo un artículo, determine cómo ve la interacción con él. Por ejemplo, este artículo no está destinado a ser leído solo una vez. Traté de optimizarlo para una búsqueda rápida. Es por eso que debajo de cada parte hay un spoiler "Brevemente" y una tabla de contenido al principio.

Oh, si tuviéramos una manera de describir de alguna manera cómo una persona leerá nuestro modelo, y encontrar la complejidad de este modelo para la lectura. Podríamos decir con certeza cómo nuestras acciones afectarán la complejidad de este proceso y aplicar nuestra teoría en una gran cantidad de problemas prácticos.

Desafortunadamente, para esto necesita crear un algoritmo general para leer personas de cualquier modelo. Si le pareció que esta es una tarea muy difícil, tiene razón.

Afortunadamente, ya he hecho parte de este trabajo.

En el próximo capítulo, que se llamará Machine Ex Homo, veremos cómo funciona nuestro cerebro con la información. Hablaremos sobre la comprensión y cómo la información que ya conocemos afecta la percepción de lo nuevo. Echemos un vistazo a los estudios de psicólogos y neurobiólogos en el campo del estudio de la memoria humana y creemos a partir de nuestro propio modelo de memoria. Con su ayuda, explicaremos algunos efectos psicológicos interesantes, como el efecto de la frecuencia de la palabra, el efecto del borde, las ilusiones ópticas. Y habrá muchas más fotos.

En resumen, será interesante, lo prometo.

PS
.

, — . , , .

.

: , . , , - .

, , . .

, , . .
, , . , , .
, , simple.explanation.of.simple@gmail.com . , , . , , -, .

Licencia:
CC BY-NC-SA 4.0

Source: https://habr.com/ru/post/es432460/


All Articles