Você está na página 1de 31

Estocstico

Se denomina estocstico (del latn stochasticus, que a su vez procede del griego
stochastiks "hbil en conjeturar"1 ) al sistema cuyo comportamiento es
intrnsecamente no determinista. Un proceso estocstico es aquel cuyo comportamiento es
no determinista, en la medida que el subsiguiente estado del sistema est determinado tanto
por las acciones predecibles del proceso como por elementos aleatorios. No obstante, de
acuerdo con M. Kac2 y E. Nelson,3 cualquier desarrollo temporal (sea determinista o
esencialmente probabilstico) que pueda ser analizable en trminos de probabilidad merece
ser denominado como un proceso estocstico.

ndice
[ocultar]

1Origen

2Aplicaciones

o 2.1Ciencias naturales

2.1.1Fsica

2.1.2Biologa

2.1.3Geomorfologa

o 2.2Otras Disciplinas

2.2.1Medicina

2.2.2Inteligencia artificial

2.2.3Msica

2.2.4Reproduccin del color

2.2.5Lengua y lingstica

o 2.3Ciencias sociales y economa

2.3.1Industria

2.3.2Finanzas

3Vase tambin

4Referencias

Origen[editar]
El uso del trmino estocstico para hacer referencia a algo basado en la teora de la
probabilidad se puede retrotraer en el tiempo hasta Ladislaus Bortkiewicz, quien le dio el
sentido de "hacer conjeturas" que porta el trmino griego desde los antiguos filsofos, y a
partir del ttulo de Ars Conjectandi que Jakob Bernoulli dio a su trabajo sobre teora de la
probabilidad.4
En matemticas, especficamente en la teora de la probabilidad, el campo de los procesos
estocsticos ha sido una importante rea de investigacin. En concreto el trmino estocstico
se aplica a procesos, algoritmos y modelos en que existe una secuencia cambiante de
eventos a medida que pasa el tiempo. Si bien en muchos problemas probabilistas se usan
variables aleatorias fijas, en los procesos estocsticos necesitamos para especificar las
variables aleatorias para cada instante del tiempo.
Una matriz estocstica es una matriz que tiene valores reales no negativos que suman uno en
cada columna.

Aplicaciones[editar]
Ciencias naturales[editar]
Un ejemplo de proceso estocstico en el mundo natural es la presin en un gas tal y como se
modela en un proceso de Wiener. Incluso aunque (en trminos clsicos) cada molcula se
mueve siguiendo un patrn determinista, el movimiento de un conjunto de ellas es informtica
y prcticamente impredecible. Un conjunto suficientemente grande de molculas mostrar
caractersticas estocsticas, como llenar su recipiente, ejercer la misma presin, difundirse en
gradientes de concentracin, etc. Estas son propiedades emergentes de los sistemas.
Fsica[editar]
El nombre "Montecarlo" para el mtodo estocstico de Montecarlo fue popularizado por los
investigadores de fsica Stanislaw Ulam, Enrico Fermi, John von Neumann y Nicholas
Metropolis, entre otros. El nombre hace referencia al Casino de Montecarlo en Mnaco, donde
el to de Ulam tomaba dinero prestado para apostarlo.5 El uso de la aleatoriedady de la
naturaleza repetitiva del proceso son anlogos a las actividades que se llevan a cabo en un
casino.
Biologa[editar]
En los sistemas biolgicos, se ha encontrado que la introduccin de "ruido" estocstico
contribuye a mejorar la fuerza de la seal de loops de feedback interno utilizados para
equilibrio y otras formas de comunicacin vestibular. Multitud de eventos bioqumicos tambin
conducen por s mismos al anlisis estocstico. La expresin gnica, por ejemplo, es un
proceso estocstico derivado de la impredecibilidad inherente a las colisiones moleculares
(por ejemplo, la unin y separacin de la ARN polimerasa a un promotor) resultado
del movimiento browniano.
Geomorfologa[editar]
Artculo principal: Meandro

Otras Disciplinas[editar]
Medicina[editar]
El efecto estocstico, o el "efecto del azar", es una de las clasificaciones de los efectos de la
radiacin que hace referencia a la naturaleza azarosa y estadstica del dao. A diferencia del
efecto determinista, la gravedad es independiente de la dosis. Solo la probabilidad de un
efecto incrementa con la dosis. El cncer es un efecto estocstico.
La diferenciacin estocstica es en la que una poblacin de clulas madre se mantiene por el
equilibrio entre las divisiones de clulas madre que generan dos clulas madre con capacidad
de autorrenovarse o dos que se diferencian.6
Inteligencia artificial[editar]
En inteligencia artificial, un programa estocstico opera utilizando mtodos probabilsticos
para solucionar problemas, como el algoritmo de recocido simulado, las redes neuronales
estocsticas, la optimizacin estocstica, los algoritmos genticos y la programacin gentica.
Un problema puede ser estocstico por s mismo, como al planificar bajo incertidumbre.
Msica[editar]
En Msica se pueden generar elementos estocsticos mediante procesos matemticos. Es
factible utilizar procesos estocsticos para componer piezas fijas, que se pueden producir en
una interpretacin.
Uno de los precursores de la msica estocstica es Iannis Xenakis, quien para componer
utiliz probabilidad, teora de juegos, teora de grupos, teora de conjuntos y lgebra de Boole.
Tambin utilizaba con frecuencia ordenadores para producir sus trabajos. Antes, John Cage y
otros autores haban compuesto msica aleatoria o indeterminada, que se crea mediante
procesos al azar pero que carece de una base matemtica estricta.
Reproduccin del color[editar]
Cuando se realiza reproduccin del color, se separa la imagen en los colores que le dan forma
a travs de la toma de mltiples fotografas filtradas para cada color. La pelcula resultante
representa los diferentes datos de cian, magenta, amarillo y negro. La impresin en color es
un sistema binario, donde la tinta puede estar o no estar presente, de modo que todas las
separaciones de color que van a ser impresas deben poder ser trasladadas en puntos en
alguna fase del proceso de trabajo. Las lneas de pantallatradicionales, que tienen amplitud
modulada, sufren problemas con el patrn de Moir, pero siguieron siendo utilizadas hasta
que el proceso estocstico conocido en ingls como stochastic screening apareci. Un
proceso de puntos estocstico (o de frecuencia modulada) crea una imagen de mayor
agudeza.
Lengua y lingstica[editar]
Los acercamientos no deterministas en los estudios de la lengua se inspiran principalmente en
el trabajo de Ferdinand de Saussure. En las teoras lingsticas basadas en el uso, por
ejemplo, donde se argumenta que la competencia, o habla, se basa en la actuacin, en el
sentido del conocimiento lingstico, siendo este basado en la frecuencia de la experiencia, se
suele decir que la gramtica es probabilstica y variable antes que fija y absoluta. Esto es as,
porque la competencia de una persona puede cambiar de acuerdo a la propia experiencia en
trminos lingsticos. De esta manera, la frecuencia de eventos de uso determina el
conocimiento que un individuo tiene de la lengua en cuestin.
Ciencias sociales y economa[editar]
La teora de la ciencia social estocstica es similar a la teora de sistemas 7 en que los eventos
son interacciones de los sistemas, aunque con un marcado nfasis sobre los procesos
inconscientes. El evento crea sus propias condiciones de posibilidad, hacindolo impredecible
para las variables que participan de l. La teora de la ciencia social estocstica puede verse
como una elaboracin de un tipo de "tercer eje" en el que puede situarse el comportamiento
humano en la lnea de la oposicin tradicional entre "naturaleza vs cuidado".
Industria[editar]
Se asume que los procesos industriales son procesos estocsticos. Este supuesto es vlido
de modo general tanto para procesos industriales continuos como por lotes. La prueba y
monitorizacin del proceso se graba utilizando un mapa de control de procesos que traza un
parmetro de un proceso de control en el tiempo. Tpicamente, una docena o ms de
parmetros sern monitorizados de modo simultneo. Los modelos estadsticos son utilizados
para definir lneas lmite que definen cuando las acciones correctivas deben tomarse para
llevar el proceso hacia su ventana de operaciones intencionales.
Finanzas[editar]
Los mercados financieros utilizan modelos estocsticos para representar el comportamiento
aparentemente aleatorio de activos como los valores, las materias primas y los tipos de
inters. Estos modelos son utilizados, entonces, por los analistas cuantitativos para valorar el
precio de los valores, ttulos de renta fija o de los tipos de inters. Estas tcnicas son
igualmente utilizadas en la industria de los seguros.

Vase tambin[editar]
Azar

Fenmeno aleatorio

Proceso estocstico

Inteligencia artificial

Dinmica de sistemas

Sistema complejo

Sistema dinmico

Mtodo de Montecarlo

Referencias[editar]
1. Volver arriba Entrada en el diccionario para el trmino "estocstico" en el DRAE.

2. Volver arriba M. Kac & J. Logan, en Fluctuation Phenomena, eds. E.W. Montroll & J.L.
Lebowitz, North-Holland, msterdam, 1976.

3. Volver arriba E. Nelson, Quantum Fluctuations, Princeton University Press, Princeton,


1985.

4. Volver arriba Jeff Miller et al. Earliest Known Uses of Some of the Words of
Mathematics (S). Consultado el 25 de enero de 2012.

5. Volver arriba Douglas Hubbard "How to Measure Anything: Finding the Value of
Intangibles in Business" pg. 46, John Wiley & Sons, 2007.
6. Volver arriba Vinay Kumar; Abul K. Abbas; Nelson Fausto; Jon C. Aster (2010).
Captulo 3:Renovacin, reparacin y regeneracin tisular. escrito en Estados
Unidos. Patologa estructural y funcional. Robbins y Cotran (8a edicin). Espaa:
Saunders Elsevier. pp. 79-110. ISBN 978-1-4160-3121-5. OCLC 726744982.

7. Volver arriba Teora y ejercicios prcticos de Dinmica de Sistemas


Categoras:
Aleatoriedad estadstica

Dinmica
Para otros usos de este trmino, vase Dinmica (desambiguacin).
La dinmica es la rama de la fsica que describe la evolucin en el tiempo de un sistema
fsico en relacin con los motivos o causas que provocan los cambios de estado fsicoy/o
estado de movimiento. El objetivo de la dinmica es describir los factores capaces de producir
alteraciones de un sistema fsico, cuantificarlos y plantear ecuaciones de movimiento o
ecuaciones de evolucin para dicho sistema de operacin. El estudio de la dinmica es
prominente en los sistemas mecnicos (clsicos, relativistas o cunticos), pero tambin en
la termodinmica y electrodinmica. En este artculo se describen los aspectos principales de
la dinmica en sistemas mecnicos, y se reserva para otros artculos el estudio de la dinmica
en sistemas no mecnicos.
En otros mbitos cientficos, como la economa o la biologa, tambin es comn hablar de
dinmica en un sentido similar al de la fsica, para referirse a las caractersticas de la
evolucin a lo largo del tiempo del estado de un determinado sistema.

ndice
[ocultar]

1Historia

2Clculo en dinmica

o 2.1Leyes de conservacin

o 2.2Ecuaciones de movimiento

3Dinmica de sistemas mecnicos

o 3.1Dinmica de la partcula

o 3.2Dinmica del slido rgido

o 3.3Dinmica de medios continuos y teora de campos

4Conceptos relacionados con la dinmica

o 4.1Inercia

o 4.2Trabajo y energa
o 4.3Fuerza y potencial

5Sistemas dinmicos

6Vase tambin

7Referencias

o 7.1Bibliografa

o 7.2Enlaces externos

Historia[editar]
Una de las primeras reflexiones sobre las causas de movimiento es la debida al filsofo
griego Aristteles. Aristteles defini el movimiento, lo dinmico ( ), como:
La realizacin acto, de una capacidad o posibilidad de ser potencia, en tanto que se est actualizando.

Por otra parte, a diferencia del enfoque actual, Aristteles invierte el estudio de la cinemtica y
dinmica, estudiando primero las causas del movimiento y despus el movimiento de los
cuerpos. Este enfoque dificult el avance en el conocimiento del fenmeno
del movimiento hasta, en primera instancia, San Alberto Magno, que fue quien hizo notar esta
dificultad, y en ltima instancia hasta Galileo Galilei e Isaac Newton. De hecho, Thomas
Bradwardine, en 1328, present en su De proportionibus velocitatum in motibus una ley
matemtica que enlazaba la velocidad con la proporcin entre motivos a fuerzas de
resistencia; su trabajo influy la dinmica medieval durante dos siglos, pero, por lo que se ha
llamado un accidente matemtico en la definicin de acrecentar, su trabajo se descart y no
se le dio reconocimiento histrico en su da.1
Los experimentos de Galileo sobre cuerpos uniformemente acelerados condujeron a Newton a
formular sus leyes fundamentales del movimiento, las cuales present en su obra
principal Philosophiae Naturalis Principia Mathematica.
Los cientficos actuales consideran que las leyes que formul Newton dan las respuestas
correctas a la mayor parte de los problemas relativos a los cuerpos en movimiento, pero
existen excepciones. En particular, las ecuaciones para describir el movimiento no son
adecuadas cuando un cuerpo viaja a altas velocidades con respecto a la velocidad de la luz o
cuando los objetos son de tamao extremadamente pequeos comparables a los tamaos.

Clculo en dinmica[editar]
En mecnica clsica y mecnica relativista, mediante los conceptos
de desplazamiento, velocidad y aceleracin es posible describir los movimientos de un cuerpo
u objeto sin considerar cmo han sido producidos, disciplina que se conoce con el nombre
de cinemtica. Por el contrario, la dinmica es la parte de la mecnica que se ocupa del
estudio del movimiento de los cuerpos sometidos a la accin de las fuerzas. En sistemas
cunticos la dinmica requiere un planteamiento diferente debido a las implicaciones
delprincipio de incertidumbre.
El clculo dinmico se basa en el planteamiento de ecuaciones del movimiento y su
integracin. Para problemas extremadamente sencillos se usan las ecuaciones de lamecnica
newtoniana directamente auxiliados de las leyes de conservacin. En mecnica clsica y
relativista, la ecuacin esencial de la dinmica es la segunda ley de Newton (o ley de Newton-
Euler) en la forma:
donde F es la sumatoria de las fuerzas y p la cantidad de movimiento. La ecuacin anterior es
vlida para una partcula o un slido rgido, para un medio continuo puede escribirse una
ecuacin basada en esta que debe cumplirse localmente. En teora de la relatividad general
no es trivial definir el concepto de fuerza resultante debido a la curvatura del espacio tiempo.
En mecnica cuntica no relativista, si el sistema es conservativo la ecuacin fundamental es
la ecuacin de Schrdinger:
Leyes de conservacin[editar]
Artculo principal: Ley de conservacin

Las leyes de conservacin pueden formularse en trminos de teoremas que establecen bajo
qu condiciones concretas una determinada magnitud "se conserva" (es decir, permanece
constante en valor a lo largo del tiempo a medida que el sistema se mueve o cambia con el
tiempo). Adems de la ley de conservacin de la energa las otras leyes de conservacin
importante toman la forma de teoremas vectoriales. Estos teoremas son:

1. El teorema de la cantidad de movimiento, que para un sistema de partculas


puntuales requiere que las fuerzas de las partculas slo dependan de la distancia
entre ellas y estn dirigidas segn la lnea que las une. En mecnica de medios
continuos y mecnica del slido rgido pueden formularse teoremas vectoriales de
conservacin de cantidad de movimiento.

2. El teorema del momento cintico, establece que bajo condiciones similares al


anterior teorema vectorial la suma de momentos de fuerza respecto a un eje es igual a
la variacin temporal del momento angular. En concreto el lagrangiano del sistema.
Estos teoremas establecen bajo qu condiciones la energa, la cantidad de movimiento o
el momento cintico son magnitudes conservadas. Estas leyes de conservacin en ocasiones
permiten encontrar de manera ms simple la evolucin del estado fsico de un sistema,
frecuentemente sin necesidad de integrar directamente las ecuaciones diferenciales del
movimiento.
Ecuaciones de movimiento[editar]
Artculo principal: Ecuacin de movimiento

Existen varias formas de plantear ecuaciones de movimiento que permitan predecir la


evolucin en el tiempo de un sistema mecnico en funcin de las condiciones iniciales y las
fuerzas actuantes. En mecnica clsica existen varias formulaciones posibles para plantear
ecuaciones:

La mecnica newtoniana que recurre a escribir directamente ecuaciones diferenciales


ordinarias de segundo orden en trminos de fuerzas y en coordenadas cartesianas. Este
sistema conduce a ecuaciones difcilmente integrables por medios elementales y slo se
usa en problemas extremadamente sencillos, normalmente usando sistemas de
referencia inerciales.

La mecnica lagrangiana, este mtodo usa tambin ecuaciones diferenciales


ordinarias de segundo orden, aunque permite el uso de coordenadas totalmente
generales, llamadas coordenadas generalizadas, que se adapten mejor a la geometra del
problema planteado. Adems las ecuaciones son vlidas en cualquier sistema de
referencia sea ste inercial o no. Adems de obtener sistemas ms fcilmente integrables,
el teorema de Noether y las transformaciones de coordenadas, permiten
encontrarintegrales de movimiento, tambin llamadas leyes de conservacin, ms
sencillamente que el enfoque newtoniano.

La mecnica hamiltoniana es similar a la anterior pero en l las ecuaciones de


movimiento son ecuaciones diferenciales ordinarias de primer orden. Adems la gama de
transformaciones de coordenadas admisibles es mucho ms amplia que en mecnica
lagrangiana, lo cual hace an ms fcil encontrar integrales de movimiento y cantidades
conservadas.

El mtodo de Hamilton-Jacobi es un mtodo basado en la resolucin de una ecuacin


diferencial en derivadas parciales mediante el mtodo de separacin de variables, que
resulta el medio ms sencillo cuando se conocen un conjunto adecuado de integrales de
movimiento.
En mecnica relativista los tres ltimos enfoques son posibles, adems de un enfoque directo
en problemas sencillos que es anlogo a muchos mtodos de la mecnica newtoniana.
Igualmente, la mecnica de medios continuos admite enfoques lagrangianos y hamiltonianos,
aunque el formalismo subyacente se trate de un sistema clsico o relativista, es notablemente
ms complicado que en el caso de sistemas partculas y slidos rgidos (estos ltimos tienen
un nmero finito de grados de libertad, a diferencia de un medio continuo). Finalmente, la
mecnica cuntica, tanto no-relativista como relativista, tambin requiere de un formalismo
matemtico notablemente ms complejo que usualmente involucra el uso de espacios de
Hilbert incluso para sistemas con un nmero finito de grados de libertad.

Dinmica de sistemas mecnicos[editar]


En fsica existen dos tipos importantes de sistemas fsicos los sistemas finitos de partculas y
los campos. La evolucin en el tiempo de los primeros pueden ser descritos por un conjunto
finito de ecuaciones diferenciales ordinarias, razn por la cual se dice que tienen un nmero
finito de grados de libertad. En cambio la evolucin en el tiempo de los campos requiere un
conjunto de ecuaciones complejas. En derivadas parciales, y en cierto sentido informal se
comportan como un sistema de partculas con un nmero infinito de grados de libertad.
La mayora de sistemas mecnicos son del primer tipo, aunque tambin existen sistemas de
tipo mecnico que son descritos de modo ms sencillo como campos, como sucede con
los fluidos o los slidos deformables. Tambin sucede que algunos sistemas mecnicos
formados idealmente por un nmero infinito de puntos materiales, como los slidos
rgidos pueden ser descritos mediante un nmero finito de grados de libertad.
Dinmica de la partcula[editar]
Artculo principal: Dinmica del punto material

La dinmica del punto material es una parte de la mecnica newtoniana en la que los sistemas
se analizan como sistemas de partculas puntuales y que se ejercen fuerzas instantneas a
distancia.
En la teora de la relatividad no es posible tratar un conjunto de partculas cargadas en mutua
interaccin, usando simplemente las posiciones de las partculas en cada instante, ya que en
dicho marco se considera que las acciones a distancia violan la causalidad fsica. En esas
condiciones la fuerza sobre una partcula, debida a las otras, depende de las posiciones
pasadas de la misma.
Dinmica del slido rgido[editar]
Artculo principal: Mecnica del slido rgido
La mecnica de un slido rgido es aquella que estudia el movimiento y equilibrio de slidos
materiales ignorando sus deformaciones. Se trata, por tanto, de un modelo matemtico til
para estudiar una parte de la mecnica de slidos, ya que todos los slidos reales son
deformables. Se entiende por slido rgido un conjunto de puntos del espacio que se mueven
de tal manera que no se alteran las distancias entre ellos, sea cual sea la fuerza actuante
(matemticamente, el movimiento de un slido rgido viene dado por un grupo uniparamtrico
de isometras).
Dinmica de medios continuos y teora de campos[editar]
Artculos principales: Medio continuo y Teora de campos.

En fsica existen otras entidades como los medios continuos (slidos deformables y fluidos) o
los campos (graviatorio, electromagntico, etc.) que no pueden ser descritos mediante un
nmero finito de coordenadas que caractericen el estado del sistema. En general, se
requieren funciones definidas sobre un dominio cuatridiomensional o regin. El tratamiento de
la mecnica clsica y la mecnica relativista de los medios continuos requiere el uso
de ecuaciones diferenciales en derivadas parciales, lo cual ocasiona dificultades analticas
mucho ms notables que las encontradas en los sistemas con un nmero finito de
coordenadas o grados de libertad (que frecuentemente pueden ser tratadas como sistemas
de ecuaciones diferenciales ordinarias).

Conceptos relacionados con la dinmica[editar]


Inercia[editar]
Artculos principales: Inercia y Masa inercial.

La inercia es la propiedad de los cuerpos de no modificar su estado de reposo o movimiento


uniforme, si sobre ellos no influyen otros cuerpos o si la accin de otros cuerpos se compensa.
En fsica se dice que un sistema tiene ms inercia cuando resulta ms difcil lograr un cambio
en el estado fsico del mismo. Los dos usos ms frecuentes en fsica son la inercia mecnica y
la inercia trmica. La primera de ellas aparece en mecnica y es una medida de dificultad para
cambiar el estado de movimiento o reposo de un cuerpo. La inercia mecnica depende de
la cantidad de masa y del tensor de inercia del cuerpo. La inercia trmica mide la dificultad con
la que un cuerpo cambia su temperatura al estar en contacto con otros cuerpos o ser
calentado. La inercia trmica depende de la cantidad de masa y de la capacidad calorfica.
Las llamadas fuerzas de inercia son fuerzas ficticias o aparentes para un observador en
un sistema de referencia no-inercial.
La masa inercial es una medida de la resistencia de una masa al cambio en velocidad en
relacin con un sistema de referencia inercial. En fsica clsica la masa inercial de partculas
puntuales se define por medio de la siguiente ecuacin, donde la partcula uno se toma como
la unidad ():
donde mi es la masa inercial de la partcula i, y ai1 es la aceleracin inicial de la partcula i,
en la direccin de la partcula i hacia la partcula 1, en un volumen ocupado slo por
partculas i y 1, donde ambas partculas estn inicialmente en reposo y a una distancia
unidad. No hay fuerzas externas pero las partculas ejercen fuerzas entre si.
Trabajo y energa[editar]
El trabajo y la energa aparecen en la mecnica gracias a los teoremas energticos. El
principal, y de donde se derivan los dems teoremas, es el teorema de la energa cintica.
Este teorema se puede enunciar en versin diferencial o en versin integral. En adelante
se har referencia al Teorema de la energa cintica como TEC.
Gracias al TEC se puede establecer una relacin entre la mecnica y las dems ciencias
como, por ejemplo, la qumica y la electrotecnia, de dnde deriva su vital importancia.
Fuerza y potencial[editar]
La mecnica de partculas o medios continuos tiene formulaciones ligeramente diferentes
en mecnica clsica, mecnica relativista y mecnica cuntica. En todas ellas las causas
del cambio se representa mediante fuerzas o conceptos derivados como la energa
potencial asociada al sistema de fuerzas. En las dos primeras se usa fundamentalmente el
concepto de fuerza, mientras que en la mecnica cuntica es ms frecuente plantear los
problemas en trminos de energa potencial. La fuerza resultante sobre un sistema
mecnico clsico se relaciona con la variacin de la cantidad de movimiento mediante la
relacin simple:
Cuando el sistema mecnico es adems conservativo la energa potencial se relaciona
con la energa cintica asociada al movimiento mediante la relacin:
En mecnica relativista las relaciones anteriores no son vlidas si t se refiere a la
componente temporal medida por un observador cualquiera, pero si t se interpreta como
eltiempo propio del observador entonces s son vlidas. En mecnica clsica dado
el carcter absoluto del tiempo no existe diferencia real entre el tiempo propio del
observador y su coordenada temporal.

Sistemas dinmicos[editar]
Artculo principal: Sistema dinmico

La teora de sistemas dinmicos es una rama de las matemticas, estrechamente


relacionada con la teora de ecuaciones diferenciales y la teora del caos que estudia las
propiedades cualitativas de las ecuaciones de evolucin dinmica.

Vase tambin[editar]
Invariancia galileana

Dinmica del punto material en mecnica newtoniana

Dinmica de sistemas

Esttica

Referencias[editar]
1. Volver arriba Sylla, E.D. (2008). Medieval dynamics. physics today 61 (4): 51-56.

Bibliografa[editar]

El Prisma.com. Dinmica del Cuerpo Rgido - Fundamentos. Consultado el 9 de


diciembre de 2009.

Cinemtica del cuerpo rgido (pdf). Universidad de Buenos Aires: Facultad de


Ciencias Exactas y Naturales - Fsica. Consultado el 9 de diciembre de 2009.
Cuerpo rgido (pdf). Universidad de Santiago de Chile: Departamento de Fsica.
Archivado desde el original el 26 de noviembre de 2015. Consultado el 9 de diciembre
de 2009.

a programacin informtica o programacin algortmica, acortada como programacin,


es el proceso de disear, codificar, depurar y mantener el cdigo fuente deprogramas
computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de
la programacin es crear programas que exhiban un comportamiento deseado. El proceso de
escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del
dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no
involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s
el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas
aplicaciones.

Del proceso de programacin surge lo que comnmente se conoce como software (conjunto
de programas), aunque estrictamente este ltimo abarca mucho ms que solo la
programacin.

ndice
[ocultar]

1Historia

2Lxico y programacin

3Programas y algoritmos

4Compilacin

5Programacin e ingeniera del software

6Referencias histricas

7Objetivos de la programacin

8Ciclo de vida del software

9Vase tambin

10Referencias

11Enlaces externos

Historia[editar]
Para crear un programa, y que la computadora lo interprete y ejecute las instrucciones escritas
en l, debe escribirse en un lenguaje de programacin. En sus inicios las computadoras
interpretaban solo instrucciones en un lenguaje especfico, del ms bajo nivel, conocido
como cdigo mquina, siendo ste excesivamente complicado para programar. De hecho solo
consiste en cadenas de nmeros 1 y 0 (sistema binario). Para facilitar el trabajo de
programacin, los primeros cientficos, que trabajaban en el rea, decidieron reemplazar las
instrucciones, secuencias de unos y ceros, por palabras o abreviaturas provenientes delingls;
las codificaron y crearon as un lenguaje de mayor nivel, que se conoce como Assembly
o lenguaje ensamblador. Por ejemplo, para sumar se podra usar la letra A de la palabra
inglesa add (sumar). En realidad escribir en lenguaje ensamblador es bsicamente lo mismo
que hacerlo en lenguaje mquina, pero las letras y palabras son bastante ms fciles de
recordar y entender que secuencias de nmeros binarios. A medida que la complejidad de las
tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un mtodo
sencillo para programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una
tarea tan trivial como multiplicar dos nmeros puede necesitar un conjunto de instrucciones en
lenguaje ensamblador, en un lenguaje de alto nivel bastar con solo una. Una vez que se
termina de escribir un programa, sea en ensamblador o en algunos lenguajes de alto nivel, es
necesario compilarlo, es decir, traducirlo completo a lenguaje mquina.1 Eventualmente ser
necesaria otra fase denominada comnmente link o enlace, durante la cual se anexan al
cdigo, generado durante la compilacin, los recursos necesarios de alguna biblioteca. En
algunos lenguajes de programacin, puede no ser requerido el proceso de compilacin y
enlace, ya que pueden trabajar en modo intrprete. Esta modalidad de trabajo es equivalente
pero se realiza instruccin por instruccin, a medida que es ejecutado el programa.

Lxico y programacin[editar]
La programacin se rige por reglas y un conjunto ms o menos reducido de rdenes,
expresiones, instrucciones y comandos que tienden a asemejarse a una lengua
naturalacotada (en ingls); y que adems tienen la particularidad de una reducida
ambigedad. Cuanto menos ambiguo es un lenguaje de programacin, se dice, es ms
potente. Bajo esta premisa, y en el extremo, el lenguaje ms potente existente es el binario,
con ambigedad nula (lo cual lleva a pensar as del lenguaje ensamblador). [cita requerida]

En los lenguajes de programacin de alto nivel se distinguen diversos elementos entre los que
se incluyen el lxico propio del lenguaje y las reglas semnticas y sintcticas.

Programas y algoritmos[editar]
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de
seguirse para resolver un problema. Un programa normalmente implementa (traduce a un
lenguaje de programacin concreto) uno o ms algoritmos. Un algoritmo puede expresarse de
distintas maneras: en forma grfica, como un diagrama de flujo, en forma de cdigo como
en pseudocdigo o un lenguaje de programacin, en forma explicativa, etc.

Los programas suelen subdividirse en partes menores, llamadas mdulos, de modo que la
complejidad algortmica de cada una de las partes sea menor que la del programa completo,
lo cual ayuda al desarrollo del programa. Esta es una prctica muy utilizada y se conoce como
"refino progresivo".

Segn Niklaus Wirth, un programa est formado por los algoritmos y la estructura de datos.

La programacin puede seguir muchos enfoques, o paradigmas, es decir, diversas maneras


de formular la resolucin de un problema dado. Algunos de los principales paradigmas de la
programacin son:

Programacin declarativa

Programacin estructurada

Programacin modular

Programacin orientada a objetos

Compilacin[editar]
El programa escrito en un lenguaje de programacin de alto nivel (fcilmente comprensible por
el programador) es llamado programa fuente y no se puede ejecutar directamente en una
computadora. La opcin ms comn es compilar el programa obteniendo un mdulo objeto,
aunque tambin puede ejecutarse en forma ms directa a travs de un intrprete informtico.
El cdigo fuente del programa se debe someter a un proceso de traduccin para convertirlo a
lenguaje mquina o bien a un cdigo intermedio, generando as un mdulo denominado
"objeto". A este proceso se le llama compilacin.

Habitualmente la creacin de un programa ejecutable (un tpico.exe para Microsoft


Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente
dicho) y traduce el cdigo fuente escrito en un lenguaje de programacin almacenado en un
archivo de texto a cdigo en bajo nivel (normalmente en cdigo objeto, no directamente a
lenguaje mquina). El segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo
nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se
aade el cdigo de las funciones que hay en las bibliotecas del compilador para que el
ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo as
finalmente el cdigo objeto a cdigo mquina, y generando un mdulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de
compilacin en archivos objetos (un tpico .o para Unix, .obj para MS-Windows, DOS); para
enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de
compilacin puede almacenarse solo de forma temporal. Un programa podra tener partes
escritas en varios lenguajes, por ejemplo, Java, C, C++ y ensamblador, que se podran
compilar de forma independiente y luego enlazar juntas para formar un nico
mdulo ejecutable.

Programacin e ingeniera del software[editar]


Artculo principal: Ingeniera del software

Existe una tendencia a identificar el proceso de creacin de un programa informtico con la


programacin, que es cierta cuando se trata de programas pequeos para uso personal, y que
dista de la realidad cuando se trata de grandes proyectos.

El proceso de creacin de software, desde el punto de vista de la ingeniera, incluye


mnimamente los siguientes pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o identificar la


posibilidad de automatizacin de una tarea.

2. Recoger los requisitos del programa. Debe quedar claro qu es lo que debe hacer el
programa y para qu se necesita.

3. Realizar el anlisis de los requisitos del programa. Debe quedar claro qu tareas debe
realizar el programa. Las pruebas que comprueben la validez del programa se pueden
especificar en esta fase.
4. Disear la arquitectura del programa. Se debe descomponer el programa en partes de
complejidad abordable.

5. Implementar el programa. Consiste en realizar un diseo detallado, especificando


completamente todo el funcionamiento del programa, tras lo cual la codificacin
(programacin propiamente dicha) debera resultar inmediata.

6. Probar el programa. Comprobar que pasan pruebas que se han definido en el anlisis
de requisitos.

7. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento


junto con los componentes que pueda necesitar (bases de datos, redes de
comunicaciones, etc.).

La ingeniera del software se centra en los pasos de planificacin y diseo del programa,
mientras que antiguamente (programacin artesanal) la realizacin de un programa consista
casi nicamente en escribir el cdigo, bajo solo el conocimiento de los requisitos y con una
modesta fase de anlisis y diseo.

Referencias histricas[editar]
El trabajo de Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron, que realiz para la
mquina de Babbage le hizo ganarse el ttulo de primera programadora de computadoras del
mundo, aunque Babbage nunca complet la construccin de la mquina. El nombre
del lenguaje de programacin Ada fue escogido como homenaje a esta programadora.

Objetivos de la programacin[editar]
La programacin debe perseguir la obtencin de programas de calidad. Para ello se establece
una serie de factores que determinan la calidad de un programa. Algunos de los factores de
calidad ms importantes son los siguientes:

Correctitud. Un programa es correcto si hace lo que debe hacer tal y como se


estableci en las fases previas a su desarrollo. Para determinar si un programa hace lo
que debe, es muy importante especificar claramente qu debe hacer el programa antes de
su desarrollo y, una vez acabado, compararlo con lo que realmente hace.

Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para
facilitar tanto su desarrollo como su posterior mantenimiento. Al elaborar un programa se
debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo de
programacin. De esta forma se ve facilitado el trabajo del programador, tanto en la fase
de creacin como en las fases posteriores de correccin de errores, ampliaciones,
modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con lo
cual la claridad es an ms necesaria para que otros puedan continuar el trabajo
fcilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar
secciones de cdigo; una prctica comn es realizar aclaraciones en el cdigo fuente
utilizando lneas de comentarios. Contrariamente, algunos por diversin o para impedirle
un anlisis cmodo a otros programadores, recurren al uso de cdigo ofuscado.

Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue
creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los
recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer
referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la
cantidad de memoria que necesita, pero hay otros recursos que tambin pueden ser de
consideracin para mejorar la eficiencia de un programa, dependiendo de su naturaleza
(espacio en disco que utiliza, trfico en la red que genera, etc.).

Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse


en una plataforma, ya sea hardware o software, diferente a aquella en la que se
desarroll. La portabilidad es una caracterstica muy deseable para un programa, ya que
permite, por ejemplo, a un programa que se ha elaborado para el
sistemaGNU/Linux ejecutarse tambin en la familia de sistemas operativos Windows. Esto
permite que el programa pueda llegar a ms usuarios ms fcilmente.

Ciclo de vida del software[editar]


Artculo principal: Proceso para el desarrollo de software

El trmino ciclo de vida del software describe el desarrollo de software, desde la fase inicial
hasta la fase final, incluyendo su estado funcional. El propsito es definir las distintas fases
intermedias que se requieren para validar el desarrollo de la aplicacin, es decir, para
garantizar que el software cumpla los requisitos para la aplicacin y verificacin de los
procedimientos de desarrollo: se asegura que los mtodos utilizados son apropiados. Estos
mtodos se originan en el hecho de que es muy costoso rectificar los errores que se detectan
tarde dentro de la fase de implementacin (programacin propiamente dicha), o peor aun,
durante la fase funcional. El modelo de ciclo de vida permite que los errores se detecten lo
antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del
software, en los plazos de implementacin y en los costos asociados. El ciclo de vida bsico
de un software consta de, al menos, los siguientes procedimientos:
Definicin de objetivos: definir el resultado del proyecto y su papel en la estrategia
global.

Anlisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos


del cliente y examinar cualquier restriccin que se pueda aplicar.

Diseo general: requisitos generales de la arquitectura de la aplicacin.

Diseo en detalle: definicin precisa de cada subconjunto de la aplicacin.

Programacin (programacin e implementacin): es la implementacin en un lenguaje


de programacin para crear las funciones definidas durante la etapa de diseo.

Prueba de unidad: prueba individual de cada subconjunto de la aplicacin para


garantizar que se implementaron de acuerdo con las especificaciones.

Integracin: para garantizar que los diferentes mdulos y subprogramas se integren


con la aplicacin. Este es el propsito de la prueba de integracin que debe estar
cuidadosamente documentada.

Prueba beta (o validacin), para garantizar que el software cumple con las
especificaciones originales.

Documentacin: se documenta con toda la informacin necesaria, sea funcional final


para los usuarios del software (manual del usuario), y de desarrollo para futuras
adaptaciones, ampliaciones y correcciones.

Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y


las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una


aplicacin dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo
de desarrolladores. En el caso del software libre se tiene un ciclo de vida mucho ms
dinmico, puesto que muchos programadores trabajan en simultneo desarrollando sus
aportaciones.

Vase tambin[editar]
Portal:Programacin. Contenido relacionado con Programacin.

Wikiproyecto:Informtica/Programacin
error de software

filosofas del desarrollo de software

historia de la ingeniera del software

ingeniera en computacin

ingeniera en informtica

lnea de cdigo fuente

lenguaje de programacin

programacin automtica

programacin dirigida por eventos

programacin estructurada

programacin extrema

programacin en pareja

programacin dinmica

programacin orientada a objetos

pruebas de software

software

Referencias[editar]
1. Volver arriba

En informtica, la programacin dinmica es un mtodo para reducir el tiempo de ejecucin


de un algoritmo mediante la utilizacin de subproblemas superpuestos ysubestructuras
ptimas, como se describe a continuacin.

El matemtico Richard Bellman invent la programacin dinmica en 1953 que se utiliza


para optimizar problemas complejos que pueden ser discretizados y secuencializados.
ndice
[ocultar]

1Introduccin

2Principio de optimalidad

3Ejemplos

o 3.1Sucesin de Fibonacci

o 3.2Coeficientes binomiales

o 3.3El viaje ms barato por el ro

4Ejercicios resueltos con programacin dinmica

5Referencias

6Enlaces externos

Introduccin[editar]
Una subestructura ptima significa que se pueden usar soluciones ptimas de subproblemas
para encontrar la solucin ptima del problema en su conjunto. Por ejemplo, elcamino ms
corto entre dos vrtices de un grafo se puede encontrar calculando primero el camino ms
corto al objetivo desde todos los vrtices adyacentes al de partida, y despus usando estas
soluciones para elegir el mejor camino de todos ellos. En general, se pueden resolver
problemas con subestructuras ptimas siguiendo estos tres pasos:

1. Dividir el problema en subproblemas ms pequeos.

2. Resolver estos problemas de manera ptima usando este proceso de tres pasos
recursivamente.

3. Usar estas soluciones ptimas para construir una solucin ptima al problema original.

Los subproblemas se resuelven a su vez dividindolos en subproblemas ms pequeos hasta


que se alcance el caso fcil, donde la solucin al problema es trivial.

Decir que un problema tiene subproblemas superpuestos es decir que se usa un mismo
subproblema para resolver diferentes problemas mayores. Por ejemplo, en la sucesin de
Fibonacci (F3 = F1 + F2 y F4 = F2 + F3) calcular cada trmino supone calcular F2. Como para
calcular F5 hacen falta tanto F3 como F4, una mala implementacin para calcular F5 acabar
calculando F2 dos o ms veces. Esto sucede siempre que haya subproblemas superpuestos:
una mala implementacin puede acabar desperdiciando tiempo recalculando las soluciones
ptimas a problemas que ya han sido resueltos anteriormente.

Esto se puede evitar guardando las soluciones que ya hemos calculado. Entonces, si
necesitamos resolver el mismo problema ms tarde, podemos obtener la solucin de la lista
de soluciones calculadas y reutilizarla. Este acercamiento al problema se
llama memoizacin (no confundir con memorizacin; en ingls es llamado memoization,
vase en). Si estamos seguros de que no volveremos a necesitar una solucin en concreto, la
podemos descartar para ahorrar espacio. En algunos casos, podemos calcular las soluciones
a problemas que de antemano sabemos que vamos a necesitar.

En resumen, la programacin hace uso de:

Subproblemas superpuestos

Subestructuras ptimas

Memoizacin

La programacin toma normalmente uno de los dos siguientes enfoques:

Top-down: El problema se divide en subproblemas, y estos se resuelven recordando


las soluciones por si fueran necesarias nuevamente. Es una combinacin
dememoizacin y recursin.

Bottom-up: Todos los problemas que puedan ser necesarios se resuelven de


antemano y despus se usan para resolver las soluciones a problemas mayores. Este
enfoque es ligeramente mejor en consumo de espacio y llamadas a funciones, pero a
veces resulta poco intuitivo encontrar todos los subproblemas necesarios para resolver un
problema dado.

Originalmente, el trmino de programacin dinmica se refera a la resolucin de ciertos


problemas y operaciones fuera del mbito de la Ingeniera Informtica, al igual que haca
la programacin lineal. Aquel contexto no tiene relacin con la programacin en absoluto; el
nombre es una coincidencia. El trmino tambin lo us en los aos 40 Richard Bellman, un
matemtico norteamericano, para describir el proceso de resolucin de problemas donde hace
falta calcular la mejor solucin consecutivamente.

Algunos lenguajes de programacin funcionales, sobre todo Haskell, pueden usar


la memorizacin automticamente sobre funciones con un conjunto concreto de argumentos,
para acelerar su proceso de evaluacin. Esto slo es posible en funciones que no
tengan efectos secundarios, algo que ocurre en Haskell pero no tanto en otros lenguajes.
Principio de optimalidad[editar]
Cuando hablamos de optimizar nos referimos a buscar alguna de las mejores soluciones de
entre muchas alternativas posibles. Dicho proceso de optimizacin puede ser visto como una
secuencia de decisiones que nos proporcionan la solucin correcta. Si, dada una
subsecuencia de decisiones, siempre se conoce cul es la decisin que debe tomarse a
continuacin para obtener la secuencia ptima, el problema es elemental y se resuelve
trivialmente tomando una decisin detrs de otra, lo que se conoce comoestrategia voraz. En
otros casos, aunque no sea posible aplicar la estrategia voraz, se cumple el principio de
optimalidad de Bellman que dicta que dada una secuencia ptima de decisiones, toda
subsecuencia de ella es, a su vez, ptima. En este caso sigue siendo posible el ir tomando
decisiones elementales, en la confianza de que la combinacin de ellas seguir siendo ptima,
pero ser entonces necesario explorar muchas secuencias de decisiones para dar con la
correcta, siendo aqu donde interviene la programacin dinmica.

Contemplar un problema como una secuencia de decisiones equivale a dividirlo en problemas


ms pequeos y por lo tanto ms fciles de resolver como hacemos en Divide y Vencers,
tcnica similar a la de programacin dinmica. La programacin dinmica se aplica cuando la
subdivisin de un problema conduce a:

Una enorme cantidad de problemas.

Problemas cuyas soluciones parciales se solapan.

Grupos de problemas de muy distinta complejidad.

Ejemplos[editar]
Sucesin de Fibonacci[editar]
Esta sucesin puede expresarse mediante la siguiente recurrencia:

Una implementacin de una funcin que encuentre el n-simo trmino de la sucesin de


Fibonacci basada directamente en la definicin matemtica de la sucesin realizando
llamadas recursivas hace mucho trabajo redundante, obtenindose una complejidad
exponencial:

FUNC fib(n: NATURAL): NATURAL


INICIO
SI n = 0 ENTONCES
DEVOLVER 0
SI NO, SI n = 1 ENTONCES
DEVOLVER 1
SI NO
devolver fib(n-1) + fib(n-2)
FIN SI
FIN

Si llamamos, por ejemplo, a fib(5), produciremos un rbol de llamadas que contendr


funciones con los mismos parmetros varias veces:

1. fib(5)

2. fib(4) + fib(3)

3. (fib(3) + fib(2)) + (fib(2) + fib(1))

4. ((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) +


fib(1))

5. (((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) +


fib(0)) + fib(1))

En particular, fib(2) se ha calculado tres veces desde cero. En ejemplos mayores, se


recalculan muchos otros valores de fib, o subproblemas.

Para evitar este inconveniente, podemos resolver el problema mediante programacin


dinmica, y en particular, utilizando el enfoque de memorizacin (guardar los valores que ya
han sido calculados para utilizarlos posteriormente). As, rellenaramos una tabla con los
resultados de los distintos subproblemas, para reutilizarlos cuando haga falta en lugar de
volver a calcularlos. La tabla resultante sera una tabla unidimensional con los resultados
desde 0 hasta n.

Un programa que calculase esto, usando Bottom-up, tendra la siguiente estructura:

FUNC Fibonacci (n: NATURAL): NATURAL


VARIABLES
tabla: ARRAY [0..n] DE NATURALES
i: NATURAL
INICIO
tabla[0] := 0
tabla[1] := 1
PARA i = 2 HASTA n HACER
tabla[i] := tabla[i-1] + tabla[i-2]
FIN PARA
DEVOLVER tabla[n]
FIN

La funcin resultante tiene complejidad O(n), en lugar de 2 a la n (puesto que genera un rbol
binaria en memoria, donde el ltimo nivel de hojas es de la forma 2 a la n). En otras palabras
la programacin dinmica, para este problema en particular convierte un problema NP a un
problema P.

Otro nivel de refinamiento que optimizara la solucin sera quedarnos tan slo con los dos
ltimos valores calculados en lugar de toda la tabla, que son realmente los que nos resultan
tiles para calcular la solucin a los subproblemas.

El mismo problema usando Top-down tendra la siguiente estructura:

FUNC Fibonacci (n: NATURAL, tabla: ARRAY [0..n] DE NATURALES):


NATURAL
VARIABLES
i: NATURAL
INICIO
SI n <= 1 ENTONCES
devolver n
FIN SI
SI tabla[n-1] = -1 ENTONCES
tabla[n-1] := Fibonacci(n-1, tabla)
FIN SI
SI tabla[n-2] = -1 ENTONCES
tabla[n-2] := Fibonacci(n-2, tabla)
FIN SI
tabla[n] := tabla[n-1] + tabla[n-2]
devolver tabla[n]
FIN

Suponemos que la tabla se introduce por primera vez correctamente inicializada, con todas las
posiciones con un valor invlido, como por ejemplo -1, que se distingue por no ser uno de los
valores que computa la funcin.

Coeficientes binomiales[editar]
El algoritmo recursivo que calcula los coeficientes binomiales resulta ser de complejidad
exponencial por la repeticin de los clculos que realiza. No obstante, es posible disear un
algoritmo con un tiempo de ejecucin de orden O(nk) basado en la idea del Tringulo de
Pascal, idea claramente aplicable mediante programacin dinmica. Para ello es necesaria la
creacin de una tabla bidimensional en la que ir almacenando los valores intermedios que se
utilizan posteriormente.

La idea recursiva de los coeficientes binomiales es la siguiente:

= + si 0 < k < n

= =1

La idea para construir la tabla de manera eficiente y sin valores intiles es la siguiente:

0 1 2 3 ... k-1 k

0 1

1 1 1

2 1 2 1

3 1 3 3 1

... ... ... ... ... ...

... ... ... ... ... ... ...

n-1 C(n-1,k-1) C(n-1,k)

n C(n,k)
El siguiente algoritmo memorizado de estrategia Bottom-up tiene complejidad polinmica y va
rellenando la tabla de izquierda a derecha y de arriba abajo:

FUNC CoeficientesPolinomiales ( n, k: NATURAL): NATURAL


Variables
tabla: TABLA DE NATURALES
i, j: NATURAL
Inicio
PARA i = 0 HASTA n HACER
tabla[i][0] := 1
FIN PARA
PARA i = 1 HASTA n HACER
tabla[i][1] := i
FIN PARA
PARA i = 2 HASTA k HACER
tabla[i][i] := 1
FIN PARA
PARA i = 3 HASTA n HACER
PARA j = 2 HASTA i-1 HACER
SI j <= k ENTONCES
tabla[i][j] := tabla[i-1][j-1] + tabla[i-1][j]
FIN SI
FIN PARA
FIN PARA
devolver tabla[n][k]
Fin

Por supuesto, el problema de los Coeficientes Binomiales tambin puede resolverse mediante
un enfoque Top-down.

El viaje ms barato por el ro[editar]


En un ro hay n embarcaderos, en cada uno de los cuales se puede alquilar un bote para ir a
otro embarcadero que est ms abajo en el ro. Suponemos que no se puede remontar el ro.
Una tabla de tarifas indica los costes de viajar entre los distintos embarcaderos. Se supone
que puede ocurrir que un viaje entre i y j salga ms barato haciendo escala en k
embarcaderos que yendo directamente.

El problema consistir en determinar el coste mnimo para un par de embarcaderos.

Vamos a llamar a la tabla de tarifas, T. As, T[i,j] ser el coste de ir del embarcadero i al j. La
matriz ser triangular superior de orden n, donde n es el nmero de embarcaderos.
La idea recursiva es que el coste se calcula de la siguiente manera:

C(i, j) = T[i, k] + C(k, j)

A partir de esta idea, podemos elaborar una expresin recurrente para la solucin:

0 si i = j
C(i, j)=
Min(T(i,k) + C(k,j), T(i,j)) si i < k <= j

Un algoritmo que resuelve este problema es el siguiente, donde T es la matriz de tarifas,


origen y destino los embarcaderos del que se parte y al que se llega respectivamente, y C la
matriz en la que almacenaremos los resultados de los costes. La funcin
MenorDeLosCandidatos devuelve el menor coste entre dos puntos, utilizando como base la
recurrencia anteriormente expuesta.

FUNC Embarcaderos ( origen, destino, n: NATURAL, T: MATRIZ DE


NATURALES): NATURAL
Variables
C: MATRIZ DE NATURALES
i, j: NATURAL
Inicio
PARA i = 1 HASTA n HACER
C[i][i] := 0
FIN PARA
PARA i = 1 HASTA n HACER
PARA j = 1 HASTA n HACER
C[i][j] := menorDeLosCandidatos(i, j, n, T, C)
FIN PARA
FIN PARA
devolver C[n] [n]
Fin

FUNC menorDeLosCandidatos ( origen, destino, n: NATURAL, T, C:


MATRIZ DE NATURALES): NATURAL
Variables
temp: NATURAL
Inicio
temp := MAX_NATURAL
PARA i = origen+1 HASTA n HACER
temp := min(temp, T[origen][i] + C[i][destino])
FIN PARA
devolver temp
Fin

n algoritmia, el problema de la mochila, comnmente abreviado por KP (del ingls Knapsack


problem) es un problema de optimizacin combinatoria, es decir, que busca la mejor solucin
entre un conjunto finito de posibles soluciones a un problema. Modela una situacin anloga al
llenar una mochila, incapaz de soportar ms de un peso determinado, con todo o parte de un
conjunto de objetos, cada uno con un peso y valor especficos. Los objetos colocados en la
mochila deben maximizar el valor total sin exceder el peso mximo.

ndice
[ocultar]

1Historia

2Definicin

3Simplificaciones y generalizaciones

o 3.1Problema de la mochila simple

o 3.2Problema de la mochila de mltiple eleccin

o 3.3Problema de la mochila mltiple

4Mtodos de resolucin

o 4.1Algoritmos voraces

o 4.2Algoritmos genticos

5Referencias

Historia[editar]
El problema de la mochila es uno de los 21 problemas NP-completos de Richard Karp,
establecidos por el informtico terico en un famoso artculo de 1972.1 Ha sido intensamente
estudiado desde mediados del siglo XX y se hace referencia a l en el ao 1897, en un
artculo de George Mathews Ballard.2
Si bien la formulacin del problema es sencilla, su resolucin es ms compleja.
Algunos algoritmos existentes pueden resolverlo en la prctica para casos de un gran tamao.
Sin embargo, la estructura nica del problema, y el hecho de que se presente como un
subproblema de otros problemas ms generales, lo convierten en un problema frecuente en
la investigacin.

Definicin[editar]
A continuacin se define formalmente el problema. 3 Supongamos que tenemos distintos tipos
de tems, que van del 1 al . De cada tipo de tem se tienen tems disponibles, donde es un
entero positivo que cumple .

Cada tipo de tem i tiene un beneficio asociado dado por vi y un peso (o volumen) wi.
Usualmente se asume que el beneficio y el peso no son negativos. Para simplificar la
representacin, se suele asumir que los tems estn listados en orden creciente segn el peso
(o volumen).

Por otro lado se tiene una mochila, donde se pueden introducir los tems, que soporta un peso
mximo (o volumen mximo) W.

El problema consiste en meter en la mochila tems de tal forma que se maximice el valor de
los tems que contiene y siempre que no se supere el peso (o volumen) mximo que
puede soportar la misma. La solucin al problema vendr dado por la secuencia de
variables x1, x2, ..., xn donde el valor de xi indica cuantas copias se metern en la mochila del
tipo de tem i.

El problema se puede expresar matemticamente por medio del siguiente programa lineal:

Si para se dice que se trata del problema de la mochila 0-1. Si uno o ms es infinito
entonces se dice que se trata del problema de la mochila no acotado tambin llamado a
veces problema de la mochila entera. En otro caso se dice que se trata del problema
de la mochila acotado

Simplificaciones y generalizaciones[editar]
Problema de la mochila simple[editar]
Artculo principal: Problema de la mochila simple

Observar que en un problema de la mochila 0-1, si para cada tipo de tem el beneficio y
los pesos son idnticos (vi=wi), entonces el problema quedara formulado de la siguiente
forma

Por tanto si existe un vector xi tal que , entonces esa ser una solucin al problema. Si
existe una solucin xi de este tipo, resolver el problema de la mochila realmente es
resolver el problema de la suma de subconjuntos. Adems si el conjunto de los pesos
de los elementos es una secuencia supercreciente, es decir, se verifica que:

Entonces se dice que se trata de un problema de la mochila simple o


tambin problema de la mochila tramposa. Este tipo de problemas tiene
importantes aplicaciones en el mundo de la criptografa.

Problema de la mochila de mltiple eleccin[editar]


Si en un problema de la mochila 0-1 los tems estn subdivididos en k clases,
denotadas por Ni, y exactamente un tem tienen que ser tomado de cada clase,
entonces hablamos del problema de la mochila de mltiple eleccin.

Problema de la mochila mltiple[editar]


Si en un problema de la mochila 0-1 tenemos "n" tems y m mochilas con
capacidades Wi entonces tenemos el problema de la mochila mltiple

Un caso especial del problema de la mochila mltiple es cuando los


beneficios son iguales a los pesos y todas las mochilas tienen la misma
capacidad. Entonces se le llamaproblema de la mltiple suma de
subconjuntos.

Mtodos de resolucin[editar]
Este artculo o seccin sobre matemticas necesita ser wikificado con
formato acorde a las convenciones de estilo.
Por favor, edtalo para que las cumpla. Mientras tanto, no elimines este aviso, puest
enero de 2012.
Tambin puedes ayudar wikificando otros artculos.

Este problema se ha resuelto tradicionalmente mediante programacin


lineal entera.

El hecho de que se trate de programacin lineal hace referencia a que la


funcin a optimizar y las inecuaciones que constituyen las restricciones han
de ser lineales, es decir, han de ser funciones cuyas incgnitas estn
elevadas exclusivamente a la unidad.

Existe otra forma de resolver este tipo de problema, a travs de los


denominados algoritmos voraces. Una aproximacin voraz consiste en que
cada elemento a considerar se evala una nica vez, siendo descartado o
seleccionado, de tal forma que si es seleccionado forma parte de la solucin,
y si es descartado, no forma parte de la solucin ni volver a ser considerado
para la misma. Con este mtodo no siempre es posible dar una solucin a un
problema.

Otro sistema para resolver el problema de la mochila es mediante algoritmos


genticos que son mtodos de optimizacin que tratan de hallar tales que
sea mximo.

Algoritmos voraces[editar]
a) Aplicacin del mtodo:

Partimos de la formulacin del problema de la mochila aportada


anteriormente:

La utilizacin de un algoritmo voraz consiste en introducir en la mochila


segn orden decreciente de utilidad (beneficio) los diversos objetos. En
una primera etapa, se adicionarn unidades enteras hasta que, por
motivo de capacidad, no sea posible seguir introduciendo enteros y haya
que aadir la porcin que quepa del siguiente objeto.

b) Concepto de solucin ptima:

Teorema: si se ordenan los objetos de forma decreciente en cuanto a su


relacin (utilidad/ponderacin = bi/ci), y se introducen en la mochila
enteros en este orden mientras quepan, y cuando no quede capacidad
para uno entero se aade la porcin que an tenga cabida, el resultado al
que se llega es una solucin ptima.

Algoritmos genticos[editar]
Consisten en mtodos adaptativos de optimizacin que tratan de hallar
(xi,...,xn) tales que [Sumatoria (bi*xi) desde i= 1 hasta n] sea mximo.
Pueden usarse para resolver problemas de bsqueda y optimizacin. Se
basan en el proceso gentico de los organismos vivos, por imitacin de
este proceso, los Algoritmos Genticos son capaces de ir creando
soluciones para problemas del mundo real. La evolucin de dichas
soluciones hacia valores ptimos del problema depende en buena medida
de una adecuada codificacin de las mismas. Para utilizar un algoritmo
gentico hacen falta tres elementos:

Descripcin de la poblacin de individuos: cada individuo representa una solucin


factible a un problema dado. A cada individuo se le asigna un valor o puntuacin,
relacionado con la bondad de dicha solucin.
Funcin de evaluacin (llamada funcin de ajuste): encontrar una expresin
matemtica que punte a cada individuo de forma que nuestro ideal sea un mximo o
un mnimo.
Seleccin o Mecanismos de reproduccin: la funcin de seleccin de padres ms
utilizada, es la denominada funcin de seleccin proporcional a la funcin objetivo, en
la cual cada individuo tiene una probabilidad de ser seleccionado como padre que es
proporcional al valor de su funcin objetivo, es decir, indica que cada objeto de la
mochila tendr una probabilidad de ser seleccionado que depender de la relacin que
exista entre beneficios y el peso que ocupa.

Você também pode gostar