MOMENTO 1
Luis Alberto Sanchez Correa - Código: 16.786.134
Jose Ramon Valencia - Código: 16937012
Carlos Fernando Escalante - Código: 94476240
Jhon Faber Patiño - Código: 10490814
Carlos Arturo Cardona -
Director: Diego Fernando Medina
Grupo Colaborativo: 90169A_223
Universidad Nacional Abierta y a Distancia – UNAD.
Programa: Ingeniería Electrónica
Cead: Palmira- Valle- Colombia
Julio -2015
INTRODUCCION
En el presente informe se busca iniciar y facilitar el proceso de aprendizaje con base en la identificación de conocimientos previos sobre la temática del curso; reconocer a los compañeros de equipo de trabajo, al tutor y al director del curso.
Desde hace algunas décadas algunas mentes brillantes han estudiado la IA (inteligencia artificial) encaminando sus esfuerzos en crear sistemas cada vez más autónomos e inteligentes que realicen tareas que el cerebro humano no podría en determinado tiempo. Pero el órgano más poderoso de nuestro cuerpo, el cerebro, es inigualable por las relaciones que existen entre las millones de neuronas que interactúan para realizar procesos complejos, que tal vez las maquinas nunca lograrían, aunque en un futuro tal vez lejano o no, podríamos pensar en crear sistemas con una inteligencia aproximada a la humana.
Uno de los objetivos de la IA es el diseño de Agentes Inteligentes que a través de sus percepciones del ambiente, tome las decisiones adecuadas y realice las acciones correctas, es por esto que en esta actividad intentaremos diseñar, de forma general, un Agente Inteligente capaz de dar pronósticos sobre La Edición de la Vuelta Ciclista de España de acuerdo a información suministrada bajo este entorno.
El grupo colaborativo entregará el desarrollo de una solución que involucre el análisis y diseño. Durante el desarrollo cada participante tendrá la oportunidad de interactuar en el foro de trabajo colaborativo para resolver diferencias con los compañeros de grupo.
OBJETIVOS
Generales
Diseñar de forma general un agente inteligente sobre la Edición de la vuelta ciclista de España.
Específicos
Identificar los tipos de Agentes Inteligentes.
Descubrir las ventajas y desventajas de la inteligencia artificial.
Participar e interactuar constante en el foro del desarrollo de la actividad, presentando respuesta a las preguntas solicitadas, debatiendo y retroalimentando las respuestas de los compañeros de grupo, en pro de enriquecer cada producto individual, teniendo como base el reconocimiento de los entornos del curso, y lectura apropiación del Syllabus del curso.
Conocer a los integrantes del grupo colaborativo.
Identificar los tipos de problemas computacionales y su complejidad
HISTORIA CRONOLOGIA DE LA INTELIGENCIA ARTIFICIAL
Estudiante Web links de las presentaciones
Luis Alberto Sanchez ==> Redes Neuronales
Jose Ramon Valencia ==> Sistemas Expertos
Jhon Faber Patino ==> Robótica
Carlos Arturo Cardona ==> Realidad Virtual
Carlos Fernando Escalante ==> Vida Artificial
Diseño
de un Agente Inteligente
Por definición un
agente inteligente es una entidad que percibe y actúa sobre un entorno, un
agente es todo aquello que puede considerarse que percibe su ambiente mediante
sensores y que responde o actúa en tal ambiente por medio de efectores. En este caso un agente de software, sus
percepciones y acciones vienen a ser las cadenas de bits codificados.
Describa las
propiedades de los agentes que hace uso el agente seleccionado.
Se debe utilizar un Agente
Inteligente de Información de Reflejo Simple, el cual podrá procesar consultas,
poseer capacidad de proceso y conocimiento del entorno donde se mueve; además,
contener información de un dominio, en este caso las Ediciones de la Vuelta
Ciclista de España. Este agente también utilizara información de otros Agentes
como base de conocimiento para tomar las decisiones más adecuadas.
Las propiedades de
las que hará uso el Agente Inteligente de Información son:
Autonomía: Actuar sin ningún tipo de intervención humana directa, y tener
control sobre sus propios actos.
Sociabilidad: Comunicarse por medio de un lenguaje común con otros agentes, e
incluso con los humanos.
Capacidad de reacción: Percibir su
entorno, y reaccionar para adaptarse a él.
Iniciativa: Emprender las acciones para resolver un problema.
La
siguiente figura muestra un esquema generalizado de nuestro agente
2.2 Definir
el problema del agente
Nuestro Agente inteligente debe percibir las entradas que han sido
ingresadas al sistema como los datos personales de los ciclistas, condición
física, kilómetros recorridos, numero de etapas, puesto que ocupo en la
clasificación final; además debe percibir la información del equipo como la
nacionalidad, el nombre del director y las pruebas que ha participado.
De acuerdo a esta información suministrada por el entorno de la
Vuelta Ciclista de España, debe analizarla junto con la información obtenida de
otros agentes inteligentes y tomar decisiones respecto a los pronósticos sobre
la competencia, tal vez sugiriendo sobre los posibles ganadores de la Vuelta
Ciclista a España.
El programa puede realizar tareas específicas para el usuario y
posee un grado de inteligencia suficiente para ejecutar parte de sus tareas de
forma autónoma y para interactuar con el entorno de forma útil.
CRUCIGRAMA
Horizontales
1. Es la combinación de la ciencia de los
computadores, la psicología y la filosofía.
5. Propiedad de los agentes inteligentes que
hace referencia a la interacción con otros agentes y otras entidades
6. Según las primeras investigaciones la IA
necesita de
8. Una de las características en las que se
puede dividir un problema.
10. Los agentes se clasifican según su
11. Investigador que definió la inteligencia
como la capacidad de desarrollar conceptos y captar su significado
12. Maquina programable de propósito general
que pose ciertas características antropomórficas
Verticales
2. Se caracterizan por actuar en un ambiente
en particular y ser capaces de realizar varias acciones basadas en su entorno
3. Programas computacionales diseñados para
actuar como expertos en un dominio en particular restringido.
4. Método propuesto para saber si una maquina
es capaz de pensar
7. Sugiere que inteligencia es todo lo que
puede ser medido mediante pruebas de inteligencia
9. Dentro del desarrollo histórico propuesto
por Jackson periodo comprendido entre 1965-1975
13. Nombre del creador del Test de Turing
14. Sistema que intenta simular un
comportamiento lingüístico humano
15. Inteligencia Artificial
RESPUESTAS
Horizontales
1.Inteligencia
artificial
5. sociabilidad
6. conocimiento
8. Polinomial
10. entorno
11. Ternan
12. robot
Verticales
- Agentes inteligentes
- Sistemas expertos
- Test de turing
7. Marvin Minsky
9. romántico
13. Alan
14. PLN (Procesamiento de lenguajes naturales)
15. IA
COMPLEJIDAD COMPUTACIONAL
EFICIENCIA ALGORITMICA
La Teoría de la Complejidad Computacional es una rama de la teoría de la computación que se centra en la clasificación de los problemas computacionales de acuerdo a su dificultad inherente, y en la relación entre dichas clases de complejidad. Un problema se cataloga como "inherentemente difícil" si su solución requiere de una cantidad significativa de recursos computacionales, sin importar el algoritmo utilizado. La teoría de la complejidad computacional formaliza dicha aseveración, introduciendo modelos de cómputo matemáticos para el estudio de estos problemas y la cuantificación de la cantidad de recursos necesarios para resolverlos, como tiempo y memoria.
Uno de los fines de la teoría de la complejidad computacional es determinar los límites prácticos de qué es lo que se puede hacer en una computadora y qué no. Otros campos relacionados con la teoría de la complejidad computacional son el análisis de algoritmos y la teoría de la computabilidad. Una diferencia significativa entre el análisis de algoritmos y la teoría de la complejidad computacional, es que el primero se dedica a determinar la cantidad de recursos requeridos por un algoritmo en particular para resolver un problema, mientras que la segunda, analiza todos los posibles algoritmos que pudieran ser usados para resolver el mismo problema. La teoría de la complejidad computacional trata de clasificar los problemas que pueden, o no pueden ser resueltos con una cantidad determinada de recursos. A su vez, la imposición de restricciones sobre estos recursos, es lo que la distingue de la teoría de la computabilidad, la cual se preocupa por qué tipo de problemas pueden ser resueltos de manera algorítmica.
En Ciencias de la Computación, el término eficiencia algorítmica es usado para describir aquellas propiedades de los algoritmos que están relacionadas con la cantidad de recursos utilizados por el algoritmo. Un algoritmo debe ser analizado para determinar el uso de los recursos que realiza. La eficiencia algorítmica puede ser vista como análoga a la ingeniería de productividad de un proceso repetitivo o continuo. Con el objetivo de lograr una eficiencia máxima se quiere minimizar el uso de recursos. Sin embargo, varias medidas (e.g. complejidad temporal, complejidad espacial) no pueden ser comparadas directamente, luego, cual de dos algoritmos es considerado más eficiente, depende de cual medida de eficiencia se está considerando como prioridad, e.g. la prioridad podría ser obtener la salida del algoritmo lo más rápido posible, o que minimice el uso de la memoria, o alguna otra medida particular. Note que este artículo no trata de optimización, concepto que es abordado en optimización de programas, compiladores de optimización, optimización de bucles, optimización de códigos orientados a objetos, etc. El término optimización en si puede causar confusión, ya que todo lo que generalmente se puede hacer es en realidad una 'mejora'.
El análisis de algoritmos es una parte importante de la Teoría de complejidad computacional más amplia, que provee estimaciones teóricas para los recursos que necesita cualquier algoritmo que resuelva un problema computacional dado. Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmos eficientes. A la hora de realizar un análisis teórico de algoritmos es común calcular su complejidad en un sentido asintótico, es decir, para un tamaño de entrada suficientemente grande. La cota superior asintótica, y las notaciones omega (cota inferior) y theta (caso promedio) se usan con esa finalidad. Por ejemplo, la búsqueda binaria decimos que se ejecuta en una cantidad de pasos proporcional a un logaritmo, en O(logno), coloquialmente "en tiempo logarítmico". Normalmente las estimaciones asintóticas se utilizan porque diferentes implementaciones del mismo algoritmo no tienen por qué tener la misma eficiencia. No obstante la eficiencia de dos implementaciones "razonables" cualesquiera de un algoritmo dado está relacionada por una constante multiplicativa llamada constante oculta.
La medida exacta (no asintótica) de la eficiencia a veces puede ser computada pero para ello suele hacer falta aceptar supuestos acerca de la implementación concreta del algoritmo, llamada modelo de computación. Un modelo de computación puede definirse en términos de un ordenador abstracto, como la Máquina de Turing, y/o postulando que ciertas operaciones se ejecutan en una unidad de tiempo. Por ejemplo, si al conjunto ordenado al que aplicamos una búsqueda binaria tiene 'n' elementos, y podemos garantizar que una única búsqueda binaria puede realizarse en un tiempo unitario, entonces se requieren como mucho log2 N + 1 unidades de tiempo para devolver una respuesta.
Las medidas exactas de eficiencia son útiles para quienes verdaderamente implementan y usan algoritmos, porque tienen más precisión y así les permite saber cuánto tiempo pueden suponer que tomará la ejecución. Para algunas personas, como los desarrolladores de videojuegos, una constante oculta puede significar la diferencia entre éxito y fracaso.
Las estimaciones de tiempo dependen de cómo definamos un paso. Para que el análisis tenga sentido, debemos garantizar que el tiempo requerido para realizar un paso se encuentre acotado superiormente por una constante. Hay que mantenerse precavido en este terreno; por ejemplo, algunos análisis cuentan con que la suma de dos números se hace en un paso. Este supuesto puede no estar garantizado en ciertos contextos. Si por ejemplo los números involucrados en la computación pueden ser arbitrariamente grandes, dejamos de poder asumir que la adición requiere un tiempo constante (usando papel y lápiz, compara el tiempo que necesitas para sumar dos enteros de 2 dígitos cada uno y el necesario para hacerlo con dos enteros pero de 1000 dígitos cada uno).
¿Qué hace para un algoritmo BUENO?
- Debe Funcionar.
- Debe completar su tarea en una cantidad finita (razonable) de tiempo.
- Dos o más algoritmos que resuelven el mismo problema pueden ser muy diferentes y todavía satisfacer estos dos criterios. Por lo tanto, el siguiente paso es determinar qué algoritmo es "mejor".
- En general, existen dos criterios utilizados para determinar si un algoritmo es "mejor" que otro.
- Espacio necesario (es decir, la cantidad de memoria que se necesita para completar la tarea).
- Requisitos de tiempo (es decir, cuánto tiempo se tarda en completar la tarea).
- Un tercer criterio que se debe considerar es el costo del tiempo humano. Es decir, el tiempo para desarrollar y mantener el programa.
- Un truco de codificación inteligente que puede mejorar los requisitos de espacio y tiempo y / o frecuencia puede ser compensado por la pérdida de la legibilidad del programa que se traduce en el aumento del costo humano de mantener el programa.
Debido al hecho de que los ordenadores de hoy en día tienen grandes cantidades de memoria (tanto internos como secundarias), este curso será principalmente preocupados con los requisitos de tiempo. En la mayoría de los casos, las diferencias en los requisitos de espacio de la mayoría de los algoritmos es insignificante.
Medición Requisitos Tiempo de un algorithmo
¿Cómo se determina los requisitos de tiempo de dos algoritmos?
Opción 1: Escribir y Ejecutar un Programa - Una manera obvia de probar la velocidad de dos algoritmos diferentes sería escribir dos programas y luego ejecutar estos programas con algún tipo de dispositivo de tiempo. Aunque esto puede ser una buena indicación de que el algoritmo es más rápido (vamos a menudo hacer esto), hay al menos cuatro problemas con este enfoque que necesitan ser considerados.
Overhead: La implementación real del algoritmo en un programa puede requerir algún tipo de gastos generales de programación que pueden influir en la velocidad aparente del algoritmo real.
Codificación: La velocidad del algoritmo podría verse afectada por la codificación real del programa y / o el lenguaje de programación utilizado. La diferencia podría ser simplemente el resultado de una mejor programación o el idioma.
El Ordenador: La velocidad del programa podría estar influenciado por el equipo que ejecuta el programa y cómo se ejecuta conjuntos particulares de declaraciones.
Los datos: Los datos de prueba reales puede tener una gran influencia en la eficiencia de un programa. Este es probablemente el problema más importante y el más difícil de superar (no se puede probar todos los posibles conjuntos de datos).
Opción 2: Análisis matemático - Un enfoque más fiable para el análisis de la eficiencia de los algoritmos es medir matemáticamente la velocidad del algoritmo en términos de "uints tiempo".
Los diferentes tipos de operaciones o estados pueden requerir diferentes unidades de tiempo. Algunas unidades de tiempo comunes que a menudo son considerados incluyen:
comparaciones (más común)
asignaciones (al lado más común)
Operaciones de E / S
operaciones numéricas (es decir, adiciones, sustracciones, multiplicaciones, ...)
Por lo tanto, nuestra medida primaria de eficacia algoritmo será un análisis matemático del número de comparaciones y / o asignaciones requeridas por el algoritmo para completar su tarea. En la mayoría de los casos, solo se utilizarán comparaciones debido a que una comparación (es decir, la decisión) es mucho más costoso (en términos de tiempo) que una asignación o cálculo.
eor - Caso, Mejor - Caso y Caso promedio:
Con algunos algoritmos, la eficiencia de la velocidad es una función de la cantidad de datos pero independiente de los datos reales. Por ejemplo, la búsqueda de la suma de los valores de una matriz de números enteros.
Con otros algoritmos, la eficiencia de velocidad no sólo se ve afectada por la cantidad de datos, pero también por el propio datos real. Por ejemplo, buscar una matriz de objetos para un artículo con un valor particular en algún campo clave. Lo que usted está buscando puede ser el primer punto marcado (que sólo requiere un cheque), o puede ser que no puede encontrar en todo (que requieren el máximo número de cheques).
En estos casos, es importante tener en cuenta:
peor de los casos: La situación que requeriría la mayor cantidad de procesamiento.
mejor de los casos: La situación que requeriría la menor cantidad de procesamiento.
promedio de los casos: La cantidad promedio de procesamiento requerido. Esta opción es la más difícil de calcular, ya que debe tener en cuenta las probabilidades de todos los casos posibles y la cantidad de procesamiento requerido para cada caso.
En estas situaciones, la aplicación de un algoritmo particular sería determinada por el cual extrema es más probable para el algoritmo particular.
Ejemplos: Búsquedas secuenciales y binarios de una matriz de n artículos
Búsqueda secuencial - Supongamos que los datos de la matriz es en ningún orden en particular.
peor de los casos: no encontrado o la búsqueda del elemento que se encuentra en la última posición. f ( n) = n
mejor de los casos: Se encuentra en la primera posición. f ( n) = 1
caso promedio: Suponiendo que la probabilidad de que el artículo se encuentra en cualquier posición es igualmente probable, f ( n) = 1 / n + 2 / n + 3 / n + ••• + n / n = (1 + 2 + 3 + ••• + n) / n = (n + 1) / 2
Ordenado Búsqueda secuencial - Requiere la condición previa de que los datos de la matriz se ordena por el campo de clave que se utilizará para la búsqueda. Esta sobrecarga adicional afectará a la eficacia de la búsqueda, pero por ahora no será considerado.
peor de los casos: Busca el elemento que es mayor o igual que el artículo en la última posición. f ( n) = n
mejor de los casos: Busca el elemento que es menor o igual al elemento de la primera posición. f ( n) = 1
caso promedio: --- no pueden, en general, se determinará ---
Binary Search - Requiere la condición previa de que los datos de la matriz se ordena por el campo de clave que se utilizará para la búsqueda. Esta sobrecarga adicional afectará a la eficacia de la búsqueda, pero por ahora no será considerado
peor de los casos: no encontrado o la búsqueda del elemento que sería el último comprobado antes de determinar que no está en la matriz. f ( n) = log2N (ver más abajo para la obtención de este resultado)
mejor de los casos: Se encuentra en la posición n / 2 (el primer valor marcada). f ( n) = 1
caso promedio: --- no pueden, en general, se determinará ---
Determinar el cálculo del peor caso para la búsqueda binaria ...
La búsqueda binaria comienza por mirar el elemento medio en la matriz (en la posición n / 2). Esto da lugar a tres posibilidades:
Este es el artículo que usted está buscando, en cuyo caso está ahora terminado. Pero esto no sería el peor de los casos, por lo tanto, vamos a ignorar esta posibilidad.
El artículo que usted está buscando es inferior (es decir, viene antes) el elemento central. Por lo tanto, se puede tirar a la basura el elemento central y la segunda mitad de la lista y buscar en la primera mitad de la lista por el mismo proceso. Esto se traduce en la búsqueda de en medio de n / 2 artículos.
El artículo que usted está buscando es mayor que (es decir, viene después) el elemento central. Por lo tanto, se puede tirar a la basura el elemento central y la primera mitad de la lista y buscar en la segunda mitad de la lista por el mismo proceso. Esto se traduce en la búsqueda de en medio de n / 2 artículos.
Así que la cuestión se reduce a, "¿Cuántas veces puede byc producirse antes de ejecutar fuera de los datos a tener en cuenta?"
Los primeros resultados de la comparación de n / 2 artículos sobrantes.
Los resultados de comparación en segundo (n / 2) / 2 = n / (22) artículos sobrantes.
Los resultados tercio de comparación en ((n / 2) / 2) / 2 = n / (23) artículos sobrantes.
Los resultados del cuarto de comparación en n / (24) artículos sobrantes.
etc ........
Finalmente, los resultados de la comparación de orden k en n / (2k) artículos sobrantes. Si estos resultados en un artículo dejaron entonces sólo una comprobación más necesita ser hecho.
Por lo tanto, se necesitan aproximadamente comparaciones k para buscar en la matriz. Después comparaciones k, habría sólo 1 artículo sobra. Por lo tanto ...
n / (2k) = 1
2k = n
k = log2N
Desde log2N es menor que n, podemos concluir que una búsqueda binaria es más eficiente que una búsqueda lineal (en el peor caso posible).
.
-----------------------------------------------
PROBLEMAS
INTRATABLES: Los NP-Difíciles
Elaborado por José Ramón Valencia
Supón que tu jefe te pide que escribas un algoritmo
eficiente para un problema extremadamente importante para tu empresa. Después
de horas de romperte la cabeza solo se te ocurre un algoritmo de “fuerza
bruta”, que analizándolo ves que cuesta tiempo exponencial. Te encuentras en
una situación muy embarazosa: “No puedo encontrar un algoritmo eficiente, me
temo que no estoy a la altura” .Te gustaría poder decir “No puedo encontrar un
algoritmo eficiente porque no existe” Eso es decir que el problema es
intratable.
En realidad es muy
poco frecuente poder decir algo tan tajante, para la mayoría de los problemas,
es muy difícil demostrar que son intratables, pero la teoría de los
NP-completos te puede ayudar a no perder tu trabajo diciendo:
“No
puedo encontrar un algoritmo eficiente pero tampoco pueden ninguno de estos informáticos
famosos”
La teoría de los NP-completos es muy útil para diseñar
algoritmos, aunque solo de resultados negativos. Permite al diseñador centrar sus esfuerzos más
productivamente, no darse de cabezazos contra la pared. Si no conseguimos demostrar que un problema
es difícil o intratable, entonces hay que centrarse en encontrar un algoritmo
eficiente.
La teoría de los NP-completos nos permite identificar que
propiedades hacen un problema difícil. Tener una intuición de que problemas van
a ser intratables es importante para un diseñador, y solo se consigue con
experiencia demostrando intratabilidad.
El concepto fundamental es el de reducción entre un par
de problemas, que permite compararlos.
·
Si A es reducible a B y
tenemos un algoritmo eficiente para B entonces tenemos un algoritmo eficiente
para A.
·
Si A es reducible a B y no existe
un algoritmo eficiente para A entonces no existe un algoritmo eficiente para B
A
≤ B
Reducción Sencilla para
Intratabilidad
Queremos
demostrar que algunos problemas son intratables, es decir, que no tienen
algoritmos eficientes Partimos de que Ciclo Hamiltoniano y Cobertura de Vértices
son intratables.
·
Si Ciclo Hamiltoniano es reducible
a B entonces B es intratable.
·
Si Cobertura de Vértices es
reducible a B entonces B es intratable
Reducción de ciclo
Hamiltoniano
CicloHam ≤ B
Transformamos
la entrada de Ciclo Hamiltoniano en entrada de B.
·
La solución de B nos da la
solucion para Ciclo Hamiltoniano
·
Como Ciclo Hamiltoniano es
intratable entonces B es intratable
Ejemplo de Problema
Intratable
Imagínate
que eres es un actor muy cotizado, que tienes ofertas para protagonizar n películas
En cada oferta viene especificado en el primer y último día de rodaje. Para
aceptar el trabajo, debes comprometerte a estar disponible durante todo este
periodo entero, por lo tanto no puedes aceptar simultáneamente dos papeles
cuyos intervalos se superpongan.
Para
un artista como tú, los criterios para aceptar un trabajo son claros: quieres
ganar tanto dinero como sea posible. Debido a que cada una de estas películas
paga la misma tarifa por película, esto implica que buscas la mayor cantidad
posible de puestos de trabajo (intervalos) de tal manera que dos cualesquiera
de ellos no estén en conflicto entre sí.
Tú
(o tu agente) debes resolver el siguiente problema de algoritmia:
·
Problema: Planificación de películas
·
Entrada: Un conjunto I de n
intervalos, k ∈
N
·
Salida: ¿Cuál es el mayor
conjunto de intervalos de I que dos a dos sean disjuntos? o ¿qué películas
puedo hacer ganando la mayor cantidad de dinero?
·
No es muy difícil encontrar
un algoritmo eficiente.
Pero
vamos a considerar otro problema más difícil.
Más difícil:
un proyecto de película no tiene por qué rodarse en un solo intervalo, puede
tener un calendario discontinuo
·
Por ejemplo “Tarzàn de la
jungla” se rodara en Enero-Marzo y Mayo-Junio, “Terminator” se rodará en Abril
y en Agosto, “Babe” se rodará en Junio-Julio
·
El mismo actor puede rodar
“Tarzàn de la jungla” y “Terminator” pero no “Tarzàn de la jungla” y “Babe”
·
Vamos a ver que la versión decisional es
intratable
Ø Problema:
Planificación general de películas Entrada: Un conjunto I de n conjuntos de
intervalos, k ∈
N Salida: ¿Existen k conjuntos de intervalos de I que dos a dos sean disjuntos?
Ø Necesitamos
hacer una reducción desde otro problema que sepamos intratable
Ø Vamos
a intentarlo desde Conjunto Independiente ¿En que se parecen los dos problemas?
·
Los dos pretenden
seleccionar el subconjunto más grande posible
de vértices y de películas.
·
Intentemos traducir los vértices
en películas
·
Intentemos traducir vértices
con una arista en películas incompatibles
Conjunto Independiente(G, k)
·
m =número de aristas de G
·
n =número de vértices de G
·
I = ∅
·
for j = 1 to n 5
·
pelicula(j) = ∅
·
I = anadir(I, pelicula(j))
·
for la ièsima arista de G (x, y), 1 ≤ i ≤ m
·
pelicula(x) = anadir(pelicula(x), [i,
i + 0,5])
·
pelicula(y) = anadir(pelicula(y), [i,
i + 0,5])
·
Resultado GralPlanifPeliculas(I, k).
·
Cada arista se traduce en un
intervalo
·
Cada vértice es una película
que contiene los intervalos de las aristas desde ese vértice
·
Dos vértices unidos por una
arista (prohibido en el Conjunto Independiente) definen un par de películas que
comparten un intervalo (prohibido en el calendario del actor) y viceversa
·
Los mayores subconjuntos que
satisfacen los dos problemas son los mismos
·
Tenemos una reducción, un
algoritmo eficiente para el problema Gral. de planificación de películas nos da
un algoritmo eficiente para Conjunto Independiente
·
Como Conjunto Independiente
es intratable, problema Gral. de planificación
de películas es intratable
3.3 Complejidad – Problemas
NP
Problemas
de decisión que tienen un algoritmo de tiempo Polinomial en una maquina no
determinista que los acota.
Un problema de decisión pertenece a la
clase P (Polinomial) si existe un algoritmo polinomial para resolverlo.
Un problema de decisión pertenece a la
clase NP (polinomial no-deterministamente) si dada una instancia de SI y
evidencia de la misma, puede ser verificada en tiempo polinomial.
Relaciones entre las clases:
Problema abierto: ¿Es P = NP?
(problema abierto más importante de teoría de la computación)
Ejemplo de problemas NP:
·
Suma de enteros
·
Multiplicación de enteros
·
Árbol generador mínimo
·
Clique máxima
·
Camino mínimo entre un par de nodos
·
Problema del viajante de comercio
·
Conjunto independiente de cardinal máximo
Problema de satisfabilidad (SAT): Dado un
conjunto de cláusulas C1,……,Cm formadas por literales basados en las variables
booleanas X = {x1,….,xn}, determinar si hay una asignación de
valores de verdad a las variables de X tal que la expresión C1 ^ C2 ^…. ^ Cm
sea verdadera.
Clase NP - Otra caracterización
Un problema de decisión está en la clase NP
si las instancias de SI son reconocidas por una máquina de Turing
no-determinística polinomial.
La clase NP se puede definir como el
conjunto de problemas de decisión que se pueden resolver por un algoritmo
polinomial no-determinístico.
Lema: Si ∏ es un problema de decisión que
pertenece a la clase NP, Entonces ∏ puede ser resuelto por un algoritmo
determinístico en tiempo exponencial respecto del tamaño de la entrada.
3.4 PROBLEMAS DEMOSTRABLEMENTE IRRESOLUBLES
Estos se dividen en recursivamente
irresolubles y recursivamente resolubles.
3.4.1-
Recursivamente irresoluble: Un
ejemplo claro es;
PROBLEMA DE LA DETENCIÓN DE LA MT
Problema
de la parada o problema de la detención. Este famoso problema (halting problem,
en inglés), considerado por el propio Turing, consiste en preguntar si existe
un algoritmo para el siguiente problema de decisión: Dada una MT M cualquiera,
sobre el alfabeto de cinta Σ, y una cadena w ∈ Σ ∗, ¿se
detiene M al procesar la entrada w? El problema universal se puede reducir al
problema de la parada. En otros términos, asumiendo la existencia de una MT M
que resuelva el problema.
De la
parada se puede resolver el problema universal. La gráfica siguiente esboza el
razonamiento.
Sea M0w una entrada
arbitraria (M y w codifican MT y cadenas sobre Σ, respectivamente). La máquina
M0 solamente devuelve la entrada M0w, ya que las entradas para el problema
universal y para el problema de la parada coinciden. Puesto que M es capaz de
decidir si M se detiene o no con entrada w, se tendría:
Si M no se detiene
con entrada w =⇒ M no acepta a w.
Si M se detiene con
entrada w =⇒ M procesa w y
decide si la acepta o no.
Conclusión: si el
problema de la parada fuera decididle, también lo sería el problema universal.
Lo anterior también
permite concluir que el lenguaje Lp = {M0w : M se detiene con entrada w} no es recursivo.
3.4.2-
Recursivamente Resolubles
Esta clase de problema se puede resolver
mediante la aplicación de técnicas sencillas pero ingeniosas y cuyos
algoritmos son los que usa una sencillos.
Cabe precisar que están divididos en Soluciones aproximadas iterativas y
probabilísticas.
Las características de la recursividad son:
-La
recursividad es una característica de los lenguajes de programación que permite
que un subprograma se invoque a sí mismo.
- La
recursividad es útil para resolver problemas definibles en sus propios
términos.
- La
recursividad es, en cierta medida, análoga al principio de inducción.
- No
existen problemas intrínsecamente recursivos o iterativos; cualquier proceso
iterativo puede expresarse de forma recursiva y viceversa.
- La
recursividad aunque da lugar a algoritmos más simples y compactos resulta más
lenta y consume más recursos al ejecutarse sobre el ordenador.
- Para
desarrollar algoritmos recursivos hay que partir del supuesto de que ya existe
un algoritmo que resuelve una versión más sencilla del problema. A partir de
esta suposición debe hacerse lo siguiente:
1.
Identificar Subproblemas atómicos de resolución inmediata (casos base).
2.
Descomponer el problema en Subproblemas resolubles mediante el algoritmo
pre-existente; la solución de estos Subproblemas debe aproximarnos a los casos
base.
3. Probar
de manera informal que tanto los casos base como los generales pueden
solucionarse con el algoritmo desarrollado.
Un ejemplo
sencillo es el cálculo de la factorial
de un número:
Factorial
de un número, n!
Algoritmo
pre-existente: (n-1)! Caso base: 0! = 1!
Subproblemas
resolubles mediante el algoritmo pre-existente y que aproximen al caso base: n!
= n · (n-1)!
Prueba
informal: Conociendo las dos expresiones anteriores es posible calcular 0!, 1!,
4!, etc.
3.4.2.1- Lógica de Modelos probabilísticos.
Muchos
analistas tratan de describir y predecir el comportamiento de los consumidores
usando variables observables – regresión, arboles de decisión, etc. En esta primera parte consideraremos el
comportamiento como si fuera “aleatorio”
– Enfoque
alternativo: decisiones racionales.
·
Buscamos modelos que nos permitan tomar
decisiones.
·
Que nos permitan explicar elementos
identificables del comportamiento del consumidor (contar una historia)
·
Que nos permitan hacer inferencia a nivel del
individuo (o al menos al nivel de grupos de individuos).
USO:
• Entender
patrones de comportamiento a nivel desagregado.
• Hacer
predicciones de comportamiento más allá de los datos que observamos.
• Generar
benchmarks para la evaluación de estrategias comerciales.
METODOLOGÍA
1)
Determinar el problema de decisión de
marketing y la información requerida.
2)
Identificar el comportamiento observable de
interés a nivel individual (típicamente denotamos esto como x).
3)
Seleccionar una distribución de probabilidad
que caracterice este comportamiento a nivel individual. – Típicamente denotamos
esto como f (x|θ). – Consideramos los parámetros de esta distribución como
características latentes de nivel individual.
4)
Especificar una distribución para
caracterizar la distribución de las características latentes en la población. –
Típicamente denotamos esto por g(θ) y le llamamos la distribución de mezcla (o
modelo de heterogeneidad).
5)
Derivar la distribución agregada o
distribución observable de del comportamiento de interés. 
6)
Estimar los parámetros (de la distribución de
mezcla) ajustando la distribución agregada a los datos que observamos.
7)
Usar los resultados de los modelos para
resolver el problema de marketing planteado.
MODELOS A CONSIDERAR
-
Modelo de
duración en tiempo discreto –
Ejemplo Proyección de tasas de retención de clientes:
Adquirimos un
cliente: ¿Por cuantos periodos va a este cliente a estar afiliado a la
compañía?
Un usuario baja una
aplicación para el i-phone. ¿Por cuantos
periodos la va a usar? Adquirimos un
cliente en un banco. ¿Por cuantos periodos permanecerá con el banco?
Un cliente compra un
teléfono / plan de internet / consola de video juegos / sistema operativo. ¿Por
cuantos periodos lo va a usar?
-
Modelo de duración en tiempo continuo –
Ejemplo Predicción de adopción de nuevos productos
-
Modelo de
conteo
– Ejemplo Estimación de exposición publicitaria.
-
Modelo de elección – Ejemplo Respuesta
a campaña de marketing directo.
Problemas P y NP Completos – Elaborado por
John Faber Patiño
La
relación entre las clases de complejidad P y NP es una pregunta que aún no se
ha podido responder por la teoría de la complejidad computacional. En esencia,
la pregunta ¿es P = NP ? significa: si es posible "verificar"
rápidamente soluciones positivas a un problema del tipo SI/NO (donde
"rápidamente" significa "en tiempo polinómico"), ¿es que
entonces también se pueden "obtener" las respuestas rápidamente?
Los
recursos comúnmente estudiados en complejidad computacional son:
–
El tiempo: mediante una
aproximación al número de pasos de ejecución que un algoritmo emplea para
resolver un problema.
–
El espacio: mediante una
aproximación a la cantidad de memoria utilizada para resolver el problema.
Los
problemas se clasifican en conjuntos o clases de complejidad (L, NL, P,
PCompleto, NP, NP-Completo, NP Duro...)
EJEMPLO
Consideremos,
por ejemplo, el Problema de la suma de subconjuntos, que es un ejemplo de un
problema fácil de verificar, pero cuya respuesta se cree (pero no ha sido
demostrado) es difícil de calcular/hallar. Dado un conjunto de números enteros,
¿existe un subconjunto no vacío de ellos donde la suma de sus elementos es
igual a 0? por ejemplo, ¿existe un subconjunto del conjunto {−2, −3, 15, 14, 7,
−10} tal que la suma de sus elementos sea 0?
La
respuesta es SI, si bien puede llevar algún tiempo encontrar un subconjunto que
satisface el requerimiento, según cual sea el tamaño del conjunto y subconjunto.
Por otra parte, si alguien afirma que la respuesta es: «sí, porque la suma de
{−2, −3, −10, 15} es igual a cero», entonces lo podemos comprobar en forma muy
rápida y mediante unas pocas cuentas. Verificar que la suma del subconjunto es
cero es un proceso mucho más rápido que encontrar el subconjunto. La
información necesaria para verificar un resultado positivo/afirmativo es
llamada un certificado. Por lo que podemos concluir que dado los certificados
apropiados, es posible verificar rápidamente las respuestas afirmativas de
nuestro problema (en tiempo polinomial) y es ésta la razón por la que el
problema se encuentra en NP. Una respuesta a la pregunta P = NP sería
determinar si en problemas del tipo SUMA-SUBCONJUNTO es tan fácil hallar la
solución como verificarla. Si se encuentra que P no es igual a NP, ello
significa que algunos problemas NP serían significativamente más difíciles de
hallar su solución que verificar la misma. La respuesta sería aplicable a todo
este tipo de problemas, no solo al ejemplo específico de SUMA-SUBCONJUNTO.
La
restricción a problemas de tipo SI/NO realmente no es importante; aún si se
permiten respuestas más complicadas, el problema resultante resulta equivalente
(o sea si FP = FNP).
Contexto del problema
La
relación entre las clases de complejidad P y NP es estudiada por la teoría de
la complejidad computacional, la parte de la teoría de la computación que trata
de los recursos requeridos durante el cálculo para resolver un problema dado.
Los recursos más usuales son tiempo (¿cuántos pasos son necesarios para
resolver un problema?) y espacio (¿cuánta memoria es necesaria para resolver un
problema?).
En
este tipo de análisis, se requiere un modelo de la computadora para la que
desea estudiar el requerimiento en términos de tiempo. Típicamente, dichos
modelos suponen que la computadora es determinista (dado el estado actual de la
computadora y las variables de entrada, existe una única acción posible que la
computadora puede tomar) y secuencial (realiza las acciones una después de la
otra). Estas suposiciones son adecuadas para representar el comportamiento de
todas las computadoras existentes, aún incluye a las máquinas con computación
en paralelo.
En
esta teoría, la clase P consiste de todos aquellos problemas de decisión que
pueden ser resueltos en una máquina determinista secuencial en un período de
tiempo polinomial en proporción a los datos de entrada. En la teoría de
complejidad computacional, la clase P es una de las más importantes; la clase
NP consiste de todos aquellos problemas de decisión cuyas soluciones
positivas/afirmativas pueden ser verificadas en tiempo polinómico a partir de
ser alimentadas con la información apropiada, o en forma equivalente, cuya
solución puede ser hallada en tiempo polinómico en una máquina no determinista.
Por lo tanto, la principal pregunta aún sin respuesta en la teoría de la
computación está referida a la relación entre estas dos clases:
¿Es
P igual a NP? En una encuesta realizada
en el 2002 entre 100 investigadores, 61 creían que la respuesta era NO, 9
creían que la respuesta era SI, 22 no estaban seguros, y 8 creían que la
pregunta podía ser independiente de los axiomas actualmente aceptados, y por lo
tanto imposible de demostrar por el SI o por el NO2.
Definiciones formales
Más
precisamente, un problema de decisión es un problema que especifica una cadena
de caracteres de datos de entrada y requiere como solución una respuesta por el
SI o por el NO. Si existe un algoritmo (por ejemplo una máquina de Turing, o un
programa en lenguajes Lisp o Pascal con memoria irrestricta) que es capaz de
entregar la respuesta correcta para toda cadena de datos de longitud n en a lo
sumo c \cdot n^k pasos, donde k y c son constantes independientes del conjunto
de datos, entonces se dice que el problema puede ser resuelto en tiempo
polinómico y lo clasificamos como perteneciente a la clase P. En forma
intuitiva, consideramos que los problemas contenidos en P son aquellos que
pueden ser resueltos en forma razonablemente rápida.
P
suele ser la clase de problemas computacionales que son “eficientemente
resolubles” o “tratables”, aunque haya clases potencialmente más grandes que
también se consideran tratables, como RP Y BPP. Aunque también existen
problemas en P que no son tratables en términos prácticos; por ejemplo, unos
requieren al menos n^{1000000} operaciones.
En
forma intuitiva, se puede pensar que NP es un problema de decisión que es
difícil de resolver si no se posee ningún otro dato o información adicional.
Sin embargo, si se recibe la información adicional llamada un certificado,
entonces el problema puede ser resuelto fácilmente. Por ejemplo, si se nos da
el número 323 y se nos pregunta si 323 es un número factorizable, sin darnos
ningún dato o información adicional, deberíamos analizar todos los números
enteros positivos mayores que 2 pero menores que 323 para estudiar si alguno de
ellos divide exactamente al 323. Sin embargo, si se nos da el número 17,
podemos dividir 323 por 17 y rápidamente verificar que 323 es factorizable. El
número 17 es llamado un certificado. El proceso de división para verificar que
323 es factorizable es en esencia una máquina Turing y en este caso es
denominado el verificador para 323. Técnicamente se dice que el problema es
fácil si se puede resolver en tiempo polinómico y que es difícil si se resuelve
en tiempo exponencial. Formalmente, se define NP como un conjunto de lenguajes
que satisfacen ciertas condiciones.
Sea
L un lenguaje definido sobre un alfabeto finito, \Sigma.
Si
existe una relación binaria R\subset\Sigma^{*}\times\Sigma^{*} y un entero
positivo k tal que para todo x\in\Sigma^{*}, se satisfacen las siguientes
condiciones:
(i) x\in L \Leftrightarrow\exists y\in\Sigma^{*} tal
que (x,y)\in R\; y \left|y\right|\in\; O(\left|x\right|^{k}).
(ii)
El lenguaje L_{R}=\{ x\# y:(x,y)\in R\} en \Sigma\cup\{\#\} es decible.
Entonces,
la máquina de Turing que decide L_{R} (que la llamaremos V) es llamada el
Verificador para L y y es llamado el Certificado de membresía de x en L.
Finalmente,
L se encuentra en NP "si y solo si" V corre en tiempo polinómico.
Ejemplo.
Sea
\mathit{COMPOSITE} = \{x\in N:x=pq \;\text{para enteros}\; p, q > 1 \}
R
= \{(x,y)\in N\times N: 1<y<x\; ; \;y\; \text{divide a}\; x\}
Claramente,
la pregunta de si un dado x es factorizable es equivalente a la pregunta sobre
si x es un miembro de \mathit{COMPOSITE}. De hecho, se puede demostrar
fácilmente que \mathit{COMPOSITE}\in\mathbf{NP} si se verifica que
\mathit{COMPOSITE} satisface la condición indicada previamente.
• Un algoritmo eficiente es un
algoritmo de complejidad polinomial.
• Un problema está bien resuelto si se
conocen algoritmos eficientes para resolverlo.
• El objetivo es clasificar los
problemas según su complejidad.
• Un problema de decisión es un
problema cuya respuesta es sí o no
• La clasificación y el estudio de
teoría de complejidad se hace para problemas de decisión.
La clase P
P
es conocido por contener muchos problemas naturales, incluyendo las versiones
de decisión de programa lineal, cálculo del máximo común divisor, y encontrar
una correspondencia máxima.
Problemas
notables en P
Algunos
problemas naturales son completos para P, incluyendo la conectividad (o la
accesibilidad) en grafos no dirigidos.
Una
generalización de P es NP, que es la clase de lenguajes decidibles en tiempo
polinómico sobre una máquina de Turing no determinista. De forma trivial,
tenemos que P es un subconjunto de NP. Aunque no está demostrado, la mayor
parte de los expertos creen que esto es un subconjunto estricto.
Aquí,
EXPTIME es la clase de problemas resolubles en tiempo exponencial. De todas las
clases mostradas arriba, sólo se conocen dos contenciones estrictas:
P
estrictamente está contenido en EXPTIME.
L
estrictamente está contenida en PSPACE.
Los
problemas más difíciles en P son los problemas P-completos
Otra
generalización de P es el Tiempo polinómico No uniforme (P/Poly)[1]. Si un
problema está en P/poly, entonces puede solucionarse en un tiempo polinomial
determinado el cual, dado una cadena, este solo depende de la longitud de la
entrada. A diferencia de NP, no se comprueban las cadenas defectuosas que
entran en la máquina de Turing, puesto que no es un verificador.
P/poly
es una clase grande que contiene casi todos los algoritmos prácticos,
incluyendo todo el BPP. Si esta contiene a NP, la jerarquía polinomial se
colapsa con el segundo nivel. Por otra parte, esta también contiene algunos
algoritmos poco prácticos, incluyendo algunos problemas no decidibles.
Propiedades
Los
algoritmos de tiempo polinómico son cerrados respecto a la composición.
Intuitivamente, esto quiere decir que si uno escribe una función con un
determinado tiempo polinómico y consideramos que las llamadas a esa misma
función son constantes y, de tiempo polinómico, entonces el algoritmo completo
es de tiempo polinómico. Esto es uno de los motivos principales por los que P
se considera una máquina independiente; algunos rasgos de esta máquina, como el
acceso aleatorio, es que puede calcular en tiempo polinómico el tiempo
polinómico del algoritmo principal reduciéndolo a una máquina más básica.
Las
pruebas existenciales de algoritmos de tiempo polinómico
Se
conoce que algunos problemas son resolubles en tiempo polinómico, pero no se
conoce ningún algoritmo concreto para solucionarlos. Por ejemplo, el teorema
Robertson-Seymour garantiza que hay una lista finita de los menores permitidos
que compone (por ejemplo) el conjunto de los grafos que pueden ser integrados
sobre un toroide; además, Robertson y Seymour demostraron que hay una
complejidad O (n3) en el algoritmo para determinar si un grafo tiene un grafo
incluido. Esto nos da una prueba no constructiva de que hay un algoritmo de
tiempo polinómico para determinar si dado un grafo puede ser integrado sobre un
toroide, a pesar de no conocerse ningún algoritmo concreto para este problema.
Ejemplos
·
Camino Mínimo: encontrar el
camino mínimo desde un vértice origen al resto de los vértices.
·
Ciclo Euleriano: Encontrar
un ciclo que pase por cada arco de un grafo una única vez.
Clase NP-Completo
Para
abordar la pregunta de si P=NP, el concepto de la completitud de NP es muy
útil. Informalmente, los problemas de NP-completos son los problemas más
difíciles de NP, en el sentido de que son los más probables de no encontrarse
en P. Los problemas de NP-completos son esos problemas NP-duros que están
contenidos en NP, donde los problemas NP-duros son estos que cualquier problema
en NP puede ser reducido a complejidad polinomial. Por ejemplo, la decisión del
Problema del viajante de comercio es NP-completo, así que cualquier caso de
cualquier problema en NP puede ser transformado mecánicamente en un caso del
Problema del viajante de comercio, de complejidad polinomial. El Problema del
viajante de comercio es de los muchos problemas NP-completos existentes. Si
cualquier problema NP-completo estuviera en P, entonces indicaría que P=NP.
Desafortunadamente, se sabe que muchos problemas importantes son NP-completos y
a fecha de 2008, no se conoce ningún algoritmo rápido para ninguno de ellos.
Basándonos solo en esta idea, no es obvio que exista un problema NP-completo.
Un
problema NP-completo trivial e ideado, se puede formular como: Dada una
descripción de una máquina de Turing M que se detiene en tiempo polinómico,
¿existe una entrada de tamaño polinómico que M acepte? Es NP porque, dada una
entrada, es simple comprobar si M acepta o no la entrada simulando M, es
NP-duros porque el verificador para cualquier caso particular de un problema en
NP puede ser codificado como una maquina M de tiempo polinomial que toma la solución
para ser verificada como entrada. Entonces la pregunta de si el caso es o no un
caso, está determinado por la existencia de una entrada valida. El primer
problema natural que se demostró ser NP-completo fue el Problema booleano de
satisfacibilidad.
Este
resultado es conocido como el teorema de Cook-Levin; su prueba de que la
satisfacibilidad es NP-completo contiene los detalles técnicos sobre máquinas
de Turing y como se relacionan con la definición de NP. Sin embargo, después se
demostró que el problema era NP-completo, la prueba por reducción, proporcionó
una manera más simple de demostrar que muchos otros problemas están en esta
clase. Así, una clase extensa de problemas aparentemente sin relación es
reducible a otra, y son en este sentido el mismo problema.
Como
ejemplo de un problema NP-completo encontramos el problema de la suma de
subconjuntos que se puede enunciar como sigue: dado un conjunto S de enteros,
¿existe un subconjunto no vacío de S cuyos elementos sumen cero? Es fácil
verificar si una respuesta es correcta, pero no se conoce mejor solución que
explorar todos los 2n-1 subconjuntos
posibles hasta encontrar uno que cumpla con la condición.
TEOREMA DE COOK
En
teoría de la complejidad computacional, el Teorema de Cook establece lo siguiente:
• El Problema de satisfacibilidad
booleana (SAT) es NP-completo.
Lo
cual quiere decir que
Un
problema de decisión pertenece a NP si puede ser resuelto en una Máquina de
Turing indeterminista en tiempo polinomio.
Se
dice que un problema de decisión es NP-completo si pertenece a NP y si todo
problema perteneciente a NP puede ser reducido a él utilizando una
transformación polifónica.
Una
instancia del problema SAT es una expresión booleana que combina variables
booleanas con operadores booleanos. Una expresión es satisfacible si existe una
asignación de valores booleanos para las variables de esa expresión que hace
que la expresión completa sea verdadera.
EJEMPLOS:
Un
problema interesante en teoría de grafos es el de isomorfismo de grafos: Dos
grafos son isomorfos si se puede transformar uno en el otro simplemente
renombrando los vértices. De los dos problemas siguientes:
·
Isomorfismo de grafos: ¿Es
el grafo G1 isomorfo al grafo G2?
·
Isomorfismo de subgrafos:
¿Es el grafo G1 isomorfo a un subgrafo del grafo G2?
Se
sospecha que el problema de isomorfismo de grafos no está ni en P ni en
NP-completo, aunque está en NP. Se trata de un problema difícil, pero no tanto
como para estar en NP-completo.
La
forma más sencilla de demostrar que un nuevo problema es NP-completo es primero
demostrar que está en NP y luego transformar en tiempo polinómico un problema
que ya esté en NP-completo a éste. Para ello resulta útil conocer algunos de
los problemas para los que existe prueba de pertenencia a NP-completo. Algunos
de los más famosos son:
·
Problema de satisfacibilidad
booleana (SAT)
·
Problema de la mochila
(knapsack)
·
Problema del ciclo
hamiltoniano
·
Problema del vendedor
viajero
·
Problema de la clique
Conclusiones
- El agente inteligente en este caso es la base de datos que permita la información permanente y genere resultados de pronósticos respecto a los posibles resultados.
- Un software como la base de datos ACCESS como en este caso puede desarrollar la tarea requerida en este trabajo grupal.
- La inteligencia artificial se va a masificar en usos y aplicaciones y vamos a poder hacer cosas que antes ni siquiera pensábamos que fueran posibles.
- La aplicabilidad de las técnicas computacionales, nos lleva a comprender y afianzar los conocimientos de una manera teórica, logrando la comprensión de los mismos según ciertos ejemplos en la ciencia de la computación con modelos básicos y complejidad de problemas.
- Los modelos recursivos nos llevan a soluciones aproximadas ya sea por iteración o modelos probabilísticos, se parte de la solución de un problema sencillo conocido y se obtiene una generalización de orden n.
- La eficiencia de los algoritmos permite comparar diferentes técnicas y software utilizados para la solución de problemas específicos, sin lugar a duda permite optimizar recursos y desechar algoritmos con procedimientos obsoletos o que no son lo suficientemente eficientes en el uso de recursos computacionales y en el tiempo en obtener las respuestas esperadas por el usuario final.
Referencias
Bibliográficas
Ø
Modulo:
Análisis de Inteligencia Artificial. UNAD.
Ø Hipola, Pedro. 1999.
Agentes Inteligentes: Definición y Tipología. Los agentes de Información. [En
línea]. Abril 1999. Universidad de
Granada. Recuperado de: http://www.elprofesionaldelainformacion.com/contenidos/1999/abril/agentes_inteligentes_definicion_y_tipologia_los_agentes_de_informacion.html
http://www.rvazquez.org/Misitio/Materialbi_files/objetodeestudio2crnew.pdf
Ø Biografías y vidas- la
enciclopedia biográfica en línea http://www.biografiasyvidas.com/biografia/l/llull.htm
Ø Biografías y vidas- la enciclopedia
biográfica en línea http://www.biografiasyvidas.com/biografia/t/turing.htm
Avila, Mauricio. 2013. Calidad de Software-caja negra. . [En
línea]. Octubre 22 de 2013. Formato PDF. Recuperado de:
Biografías y vidas- la enciclopedia
biográfica en línea
http://www.biografiasyvidas.com/biografia/l/llull.htm
Biografías
y vidas- la enciclopedia biográfica en línea http://www.biografiasyvidas.com/biografia/t/turing.htm
Fernandez, Carmen. Villena,
Julio. Pruebas de Programas. [En
línea]. Formato PDF. Recuperado de: http://www.it.uc3m.es/ttrd/material/05-pruebas-de-programas.pdf
Hipola,
Pedro. 1999. Agentes Inteligentes: Definición y Tipología. Los agentes de
Información. [En línea]. Abril 1999.
Universidad de Granada. Recuperado: de: http://www.elprofesionaldelainformacion.com/contenidos/1999/abril/agentes_inteligentes_definicion_y_tipologia_los_agentes_de_informacion.html
Mayordomo, Elvira. 2013. Problemas intratables: Los NP-Dificiles. [En
línea]. Mayo 15 de 2013. Universidad de Zaragoza, España. Formato PDF.
Recuperado de: http://webdiis.unizar.es/asignaturas/APD/NPcompletosI.pdf
Vasquez, R. Control
de Robots. [En línea]. Formato pdf. Recuperado de:
WikiMedia
Org.. Eficiencia Algoritmica. [En línea]. Formato HTML.
Recuperado de:
WikiMedia
Org.. Teoria de la Complejidad
Computacional. [En
línea]. Formato HTML. Recuperado de:
WikiMedia
Org. Clases de Complejidad P y NP. [En línea]. Formato HTML.
Recuperado de: https://es.wikipedia.org/wiki/Clases_de_complejidad_P_y_NP

















No comments:
Post a Comment