Logo Studenta

¿Los programadores con un fondo matemático tienden a programar de una manera diferente?

Matemática

Outros

User badge image

Subida por:

Aprendiendo con Apuntes


1 respuesta(s)

User badge image

Todos los Apuntes

Hace más de un mes

Un ejemplo muy concreto. Imagina que tienes 10 millones de nodos, y que estos nodos están todos conectados entre sí. La pregunta es, ¿cuántas conexiones hay en total?

De inmediato nos damos cuenta de que el primer nodo se conecta con los restantes 9,999,999 nodos, el segundo se conecta con el primero y con los restantes 9,999,998, el tercero se conecta con el primero, con el segundo, y con los restantes 9,999,997.

Entonces, ¿cuántas conexiones hay en total? Pues habrá que realizar la siguiente suma:

9999999+9999998+9999997+...+3+2+19999999+9999998+9999997+...+3+2+1

Un programador sin fondo matemático probablemente lo resolvería así:

  1. conexiones = 0 
  2. for(i=9999999;i>0;i--) 
  3. conexiones = conexiones + i 
  4. print conexiones 

Llegando así a la respuesta correcta, que es 4999999500000.

Sin embargo, este procedimiento es muy poco eficiente, ya que tuve que repetir un ciclo 10 millones de veces.

En cambio, un programador con fondo matemático probablemente aplique el siguiente razonamiento:

9999999+9999998+9999997+...+3+2+1=9999999+9999998+9999997+...+3+2+1=

(9999999+1)+(9999998+2)+(9999997+3)+...(9999999+1)+(9999998+2)+(9999997+3)+...5 millones de veces

=99999995000000=4999999500000=9999999∗5000000=4999999500000

Y no sólo eso, en general, la suma de los primeros “n” números naturales resulta ser:

Σnk=1k=n(n+1)2Σk=1nk=n(n+1)2

Esto tiene la ventaja de que es mucho más eficiente, ya que sólo realizaste una operación matemática sencilla, en vez de un ciclo de 10 millones de veces.

Un ejemplo muy concreto. Imagina que tienes 10 millones de nodos, y que estos nodos están todos conectados entre sí. La pregunta es, ¿cuántas conexiones hay en total?

De inmediato nos damos cuenta de que el primer nodo se conecta con los restantes 9,999,999 nodos, el segundo se conecta con el primero y con los restantes 9,999,998, el tercero se conecta con el primero, con el segundo, y con los restantes 9,999,997.

Entonces, ¿cuántas conexiones hay en total? Pues habrá que realizar la siguiente suma:

9999999+9999998+9999997+...+3+2+19999999+9999998+9999997+...+3+2+1

Un programador sin fondo matemático probablemente lo resolvería así:

  1. conexiones = 0 
  2. for(i=9999999;i>0;i--) 
  3. conexiones = conexiones + i 
  4. print conexiones 

Llegando así a la respuesta correcta, que es 4999999500000.

Sin embargo, este procedimiento es muy poco eficiente, ya que tuve que repetir un ciclo 10 millones de veces.

En cambio, un programador con fondo matemático probablemente aplique el siguiente razonamiento:

9999999+9999998+9999997+...+3+2+1=9999999+9999998+9999997+...+3+2+1=

(9999999+1)+(9999998+2)+(9999997+3)+...(9999999+1)+(9999998+2)+(9999997+3)+...5 millones de veces

=99999995000000=4999999500000=9999999∗5000000=4999999500000

Y no sólo eso, en general, la suma de los primeros “n” números naturales resulta ser:

Σnk=1k=n(n+1)2Σk=1nk=n(n+1)2

Esto tiene la ventaja de que es mucho más eficiente, ya que sólo realizaste una operación matemática sencilla, en vez de un ciclo de 10 millones de veces.

¡Esta pregunta ya fue respondida!