8 de noviembre de 2010

El concepto cultural del hombre

Materia:
Antropologia Social
M. A. Karina Vega

Preguntas:

1.- Por que se caracterizo la Edad Media?
R= por el sentido religioso que direcciono la forma de vida y las ideas del hombre

2.-Principales aspectos sustanciales del hombre Medioevo
R= De la academica e intelectual
      En lo religioso
      De lo cultural

3.- Cual es la importancia en la educacion y desarrollo humano?
R= recibir la influencia de la educacion y el papel de la riqueza estimulante del   entorno.

4.- Que es socializacion?
R= Proceso a traves del cual el ser humano empieza a aprender el modo de vida de   su sociedad.

5.-Cuales son las metas de la socializacion?
R= Obtener habilidades necesarias, Saber comunicarse (hablar, escribir, leer)

6.-En que constituye la personalidad?
R= caracteristicas y rasgos de la conducta de la persona
7.- Menciona las primeras 3 etapas significantes de la vida
R= Infancia-Niñez
      Niñez-Adolescencia
      Adolescencia- 13 a 19 años

8.- Que es la diversidad?
R= Es una variedad de diferencias que existan entre personas u organizaciones

9.- Que es cultural?
R= los antecedentes, costubres y creencias que contribuyen al entendimiento del mundo por una persona.

10.- Que es estratificacion social?
R= Es la conformacion en estratos (grupos verticales) que ayudan a estudiar la composicion de un entorno social complejo.


si no pueden comentar, mandenme un correo, para saber aproximandamente cuantos tienen las preguntas.
gaby.agata@live.com.mx.

Y RECUERDEN AVISARLE A LOS DEMAS DEL EXAMEN LA PROXIMA SEMANA, PARA QUE NO VALLAN A FALTAR ESE DIA.

Saludos. 

30 de agosto de 2010

Modelos existentes para medir la calidad

Esta clase es para la materia de Calidad del Software de la FIME.

CALIDAD DEL SOFTWARE.-De acuerdo a la definicion del Instituto de Ingenieros Electricos y Electronicos (IEEE, Std. 610-1990)
“La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificacados y las necesidades o expectativas del cliente o usuario”.


La calidad se puede definir como "una característica o atributo de una cosa". De esta forma se podría decir que la calidad de los productos puede medirse como una comparación de sus características y atributos. Así, este concepto puede aplicarse a cualquier producto.


Los factores que determinan la Calidad el Software son:
•Corrección. ¿Hace lo que quiero?
•Fiabilidad. ¿Lo hace de forma fiable todo el tiempo?
•Eficiencia. ¿Se ejecutará en mi hardware lo mejor que pueda?
•Seguridad (Integridad). ¿Es seguro?
•Facilidad de uso. ¿Está diseñado para ser usado?.

La implantación de sistemas de calidad aportan gran número de beneficios a las compañías que apuestan por esta estrategia. No sólo reducen sus costes de manera razonable, sino que además incrementan sus ingresos gracias al mayor grado de satisfacción de sus clientes y en una mejora de la motivación de sus empleados.

MEDICION DE LA CALIDAD.-La medicion de la calidad del software fue impartido para mejorar los objetivos y mejorar la calidad del software.
Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la producción dos productos iguales.
La producción de artículos de cualquier especie no asegura que dos de ellos sean totalmente iguales. Quizás sea preciso realizar observaciones detalladas para lograr distinguir las variaciones entre uno y otro, ya que estas pueden no ser obvias.
.

Algunos modelos incluyen métricas para evaluar diferentes atributos de calidad del producto casi siempre en el nivel del diseño o del código.

*Los modelos de calidad más recientes están orientados a la mejora de procesos*
 
MEDIDAS DE LA CALIDAD, BASADAS EN MODELOS:
El éxito en la medición del software está ligado a la obtención, definición y manipulación conjunta de dos modelos:


Modelos empíricos
         Son los que utilizan las observaciones directas o los resultados de experimentos del fenómeno estudiado.
       ◦Contexto empírico del mundo real
Modelos numéricos
              ◦Formalización de las medidas del contexto empírico

Para el desarrollo de software nos debemos apoyar en los modelos empiricos.

En la actualidad existen dos modelos más destacados y populares en Europa: la norma ISO 9000 y el modelo EFQM.

NORMA ISO 9000:


Designa un conjunto de normas sobre calidad y gestión continua de calidad, establecidas por la Organización Internacional para la Estandarización (ISO). Se pueden aplicar en cualquier tipo de organización o actividad orientada a la producción de bienes o servicios.
Las normas recogen tanto el contenido mínimo como las guías y herramientas específicas de implantación, como los métodos de auditoría.
El ISO 9000 especifica la manera en que una organización opera, sus estándares de calidad, tiempos de entrega y niveles de servicio. Existen más de 20 elementos en los estándares de este ISO que se relacionan con la manera en que los sistemas operan.


Su implantación, aunque supone un duro trabajo, ofrece numerosas ventajas para las empresas, entre las que se cuentan con:
        -Estandarizar las actividades del personal que labora dentro de la organización por medio de la documentación
        -Incrementar la satisfacción del cliente
        -Medir y monitorear el desempeño de los procesos
        -Disminuir re-procesos
        -Incrementar la eficacia y/o eficiencia de la organización en el logro de sus objetivos
        -Mejorar continuamente en los procesos, productos, eficacia, etc.
        -Reducir las incidencias de producción o prestación de servicios




MODELO EFQM:

En 1988 el Modelo Europeo de Excelencia Empresarial, conocido como Modelo EFQM por sus siglas en ingles (Europea Foundation for Quality Managment) organización que apuesta por los modelos de gestión de calidad total (GTC o TQM), estrategias encaminadas a optimizar los recursos, reducir costes y mejorar los resultados, con el objetivo de perfeccionar constantemente el proceso productivo.


El Modelo EFQM es un modelo no normativo, cuyo concepto fundamental es la autoevaluación basada en un análisis detallado del funcionamiento del sistema de gestión de la organización usando como guía los criterios del modelo.


Esto no supone una contraposición a otros enfoques (aplicación de determinadas técnicas de gestión, normativa ISO, normas industriales específicas, etc.), sino más bien la integración de los mismos en un esquema más amplio y completo de gestión.


La utilización sistemática y periódica del Modelo EFQM por parte del equipo directivo permite a éste el establecimiento de planes de mejora basados en hechos objetivos y la consecución de una visión común sobre las metas a alcanzar y las herramientas a utilizar. Es decir, su aplicación se basa en:


      -La comprensión profunda del modelo por parte de todos los niveles de dirección de la empresa.
      -La evaluación de la situación de la misma en cada una de las áreas.


El Modelo EFQM consta de dos partes:
*Un conjunto de criterios de excelencia empresarial que abarcan todas las áreas del funcionamiento de la organización.
*Un conjunto de reglas para evaluar el comportamiento de la organización en cada criterio. Hay dos grupos de criterios:
        _Los Resultados (Criterios 6 al 9) representan lo que la organización consigue para cada uno de sus actores (Clientes, Empleados, Sociedad e Inversores).
        _Los Agentes (Criterios 1 al 5) son aspectos del sistema de gestión de la organización. Son las causas de los resultados. Para cada grupo de criterios hay un conjunto de reglas de evaluación basadas en la llamada “lógica REDER”.

23 de mayo de 2010

SOLUCION EJEMPLO NADADORES... metodo hungaro.

Redactemos de nuevo el problema:

Una competencia de relevos de 400 metros incluye a cuatro diferentes nadadores quienes nadan sucesivamente 100 metros de dorso, pecho, mariposa y libre. Un entrenador tiene 6 nadadores muy veloces cuyos tiempos esperados en segundos en los eventos individuales se dan en la tabla

¿Cómo deberá el entrenador asignar los nadadores a los relevos a fin de minimizar la suma de sus tiempos?



Tabla de tiempos.





El grafo de esta grafica, tiene cada nadador relacionado con cada uno de los tipos de nados, lo cual indica que el grafo esta sobrepoblado, y  la vista tiene mucho trafico, lo cual no nos ayuda a resolver nueestro
problema...

Seria algo asi, siendo los vertices de la inzquierda cada nadador, y los de la derecha cada tipo de nado, y  en las aristas iria indicado eltiempo que se tarda en llegar cada uno de ellos.















Segun el metodo hungaro, la mejor asignacion encontrada para resolver este problema de relevos, a manera de grafo seria la siguiente.



Como es evidente los nadadores con el numero 4 y 6,
se quedaron sin participar en el evento, pues sus tiempos no eran los ideales para soucionar el problema.
Clasificaciones de tipo de nado.
D= dorso
P= pecho
M= maripoza
L= libre

CONTINUACION... problema propuesto.

Continuacion sobre la entrada anterior.
GRAFO INICIAL...

Este es el grafo original, de acuerdo a
la tabla de datos de la entrada anterior.

De acuerdo al algoritmo y  a los datos dados.
EL grafo final, con su solucion optima seria el siguiente.




GRAFO FINAL:

Esta solucion se ecuentra al ejecutar el algoritmohungaro,
y se concidera que es la mas optima (no la unica, sino la mas optima)
pues relaciona los inicios y finales,
con fin de encontrar el recorrido, con el menor costo producido.

Yo tenia duda sobre los apareamientos de los vertices,
pero desgraciadamente no encontre informacion
al respecto, relacionado con el metodo hugaro, por fortuna
la Dra. Schaeffer me lo menciono en la
entrada anterior, y es asi como deduje que para
esta solucion como podran notar, el final 6 y  9 no tienen inicio,
y  ese es el conflicto que se puede crear.

Pero seria como el ejemplo de la informaciion, el de
los nadadores, en donde se da este mismo caso, donde simplemente
los nadadores que no brindan tiempos buenos y se empalman, pues no participan.

20 de mayo de 2010

PROBLEMA PROPUESTO, METODO HUNGARO

Solucion de costo minimo para este grafio, simple y ponderado y no dirigido.
PASO POR PASO...

Notas:
Para resolver un problema de asignacion en el cual la meta es maximizar la funcion objetivo, se debe multiplicar la matriz de ganancias por menos uno (-1) y resolver el problema como uno de minimizacion, que no es este el caso.



En un problema grande, puede resultar dificil obtener el minimo numero de filas necesarias para cubrir todos los ceros en la matriz de costos actual. Se puede demostrar que si se necesitan j lineas para cubrir todos los ceros, entonces se pueden asignar solamente j trabajos a un costo cero en la matriz actual; esto explica porque termina cuando se necesitan m lineas.




Si el numero de filas y de columnas en la matriz de costos son diferentes, el problema de asignacion esta desbalanceado. El metodo hungaro puede proporcionar una solucion incorrecta si el problema no esta balanceado; debido a lo anterior, se debe balancear primero cualquier problema de asignacion (añadiendo filas o columnas ficiticias) antes de resolverlo mediante el metodo Húngaro.
AGRÉGUE I8 E I9, para equlibrar el espacio, como se recomienda.
*I=inicio,   F= final.

PASO 1.-

Encontrar primero el elemento mas pequeño en cada fila de la matriz de costos m*m;




Se contruye una nueva matriz al restar de cada costo el costo minimo de cada fila, encontrar para esta nueva matriz, el costo minimo en cada columna.








A continuacion se debe construir una nueva matriz (denominada matriz de costos reducidos) al restar de cada costo el costo minimo de su columna.









PASO 2.-
Trazar el numero minimo de lineas (horizontales o verticales o ambas), que se requieren para cubrir todos los ceros en la matriz de costos reducidos; si se necesitan m lineas para cubrir los todos los ceros, se tiene una solucion optima entre los ceros cubiertos de la matriz. Si se requieren menos de m lineas para cubrir todos los ceros, se debe continuar con el paso 3.
Cada línea horizontal debe pasar por todo el renglón(fila) y cada línea vertical por toda la columna.

El número de lineas que se necesitaron fue 6,
como 6 es menor a m, se continua con el siguiente paso.










PASO 3.-
Localice el número menor que no esté cubierto por una línea en la matriz de costos. Reste el valor de este número a cada elemento no cubierto por una línea y súmelo a cada elemento cubierto por dos líneas.
Por ultimo se deve regresar al paso 2.





Y NUESTRA MATRIZ DE LA SIGUIENTE MANERA:

Al cambiar de nuevo las lineas verticales y horizontales, nos damos cuenta que la cantidad es la misma que anteriormente, 6
y como 6 es menor m, continuaremos con el paso 3.








Y QUEDA ASI...

Como la cantidad de lineas aumentó al asignar los números como se indica, ahora se tiene que m es igual a 7, por lo tanto se tiene una solucion optima entre los ceros cubiertos de la matriz.








GRAFO..


Asi queda representada la matriz anterior.
Tomando en cuenta los costos que se dieron al principio del ejemplo, en la tabla de datos.

17 de mayo de 2010

PROYECTO 5.- Asignación (matching): algoritmo húngaro

Asignación (matching): algoritmo húngaro
 INTRODUCCION:
Empezare describiendoles como es la asignación (matching)_
Dado un grafo un matching U en V es un conjunto de aristas no adyacentes entre sí.
Se dice  que un vértice está matched (asignado) si es contiguo con una arista en el matching.
En otro caso, el vértice está unmatched (libre).

Un matching perfecto es un matching que cubre todos los vértices del grafo. Ésto es, cada vértice está saturado bajo el matching.


2. Matchings en grafos bipartitos
Los grafos bipartitos suelen representarse gráficamente con dos columnas (o filas) de vértices y las aristas uniendo vértices de columnas (o filas) diferentes.

Los dos conjuntos U y V pueden ser pensados como un coloreo del grafo con dos colores: si pintamos los vértices en U de azul y los vérices deV de verde obtenemos un grafo de dos colores donde cada arista tiene un vértice azul y el otro verde. Por otro lado, si un gráfico no tiene la propiedad de que se puede colorear con dos colores no es bipartito.

Los problemas de matching tienen relación muchas veces con grafos bipartitos. Encontrar un matching máximo bipartito (a menudo llamado cardinalidad máxima de un grafo bipartito) en un grafo bipartito es quizás el problema más simple.
En un grafo bipartito ponderado, cada arista tiene asociado un valor.
Un matching máximo bipartito ponderado está definido como un matching perfecto donde la suma de los valores de sus arcos en el matching tiene un valor maximal. Si el grafo no es completamente bipartito, los arcos ausentes son introducidos con valor cero.
Encontrar tal matching es conocido como problema del asignacion.

El más especializado es el algoritmo Húngaro que resuelve el problema de asignación con costo de tiempo .


DEFINICION:
La primera versión conocida del método Húngaro, fue inventado y publicado por Harold Kuhn en 1955.
 Este fue revisado por James Munkres en 1957, y ha sido conocido desde entonces como el algoritmo Húngaro.
Esta fue revisada porJames Munkres en 1957, y ha sido conocido como el algoritmo húngaro, el algoritmo deasignación Munkres, o el algoritmo de Kuhn-Munkres.
El algoritmo modela un problema deasignación como una matriz de costo mn× ,donde cada elemento representa el costo de asignar el  n  trabajador al m trabajo.
El algoritmo realiza la minimización sobre los elementos de la matriz como en el caso de un problema de minimización de precios.


Seutiliza el método de eliminación Gaussiana para hacer aparecer ceros (al menos un ceropor línea y por columna). Sin embargo, en el caso de un problema de maximización de  beneficio, el costo de la matriz necesita ser modificada de modo que la minimización de sus elementos resulte maximizar los valores de costo originales.
En un problema de costo infinito, la matriz de costo inicial puede ser remodelada restando cada elemento de cada línea del valor máximo del elemento de esa línea (o la columna respectivamente). En un problema de costo finito, todos los elementos son restados del valor máximo de la matriz  entera.


FASES PARA LA APLICACION DE METODO HUNGARO:
 Las fases para la aplicación del método Húngaro son:


1.- Encontrar primero el elemento mas pequeño en cada fila de la matriz de costos m*m; se debe contruir una nueva matriz al restar de cada costo el costo  minimo de cada fila, encontrar para esta nueva matriz, el costo minimo en cada columna. A continuacion se debe construir una nueva matriz (denominada matriz de costos reucidos) al restar de cada costo el costo minimo de su columna.

2.- (En unos textos este paso se atribuye a Flood), consiste en trazar el numero minimo de lineas (horizontales o verticales o ambas unicamente de esas maneras), que se requieren para cubrir todos los ceros en la matriz de costos reducidos; si se necesitan m lineas para cubrir los todos los ceros, se tiene una solucion optima entre los ceros cubiertos de la matriz. Si se requieren menos de m lineas para cubrir todos los ceros, se debe continuar con el paso 3. El numero de lineas para cubrir los ceros es igual a la cantidad de asignaciones que hasta ese momento se puede realizar.

3.- Encontrar el menor elemento diferente de cero (llamado k) en la matriz de costos reducidos, que no esta cubierto por las lineas dibujadas en el paso 2; a continuacion se debe restar k de cada elemento no cubierto de la matriz de costos reducidos y sumar k a cada elemento de la matriz de costos reducidos cubiertos por dos lineas (intersecciones). Por ultimo se deve regresar al paso 2.

NOTAS:
A) Para resolver un problema de asignacion en el cual la meta es maximizar la funcion objetivo, se debe multiplicar la matriz de ganancias por menos uno (-1) y resolver el problema como uno de minimizacion.
B) Si el numero de filas y de columnas en la matriz de costos son diferentes, el problema de asignacion esta desbalanceado. El metodo hungaro puede proporcionar una solucion incorrecta si el problema no esta balanceado; debido a lo anterior, se debe balancear primero cualquier problema de asignacion (añadiendo filas o columnas ficiticias) antes de resolverlo mediante el metodo Hungaro.

C) En un problema grande, puede resultar dificil obtener el minimo numero de filas necesarias para cubrir todos los ceros en la matriz de costos actual. Se puede demostrar que si se necesitan j lineas para cubrir  todos los ceros, entonces se pueden asignar solamente j trabajos a un costo cero en la matriz actual; esto explica porque termina cuando se necesitan m lineas.

DEFINIR SI ES DE DECISION O DE OPTIMIZACION:
El algoritmo húngaro es un algoritmo de optimización combinatoria que soluciona problemas de asignación en tiempo n(O)3.


Optimizacion combinatoria:
La optimización combinatoria es una rama de la optimización en matemáticas aplicadas y en ciencias de la computación, relacionada a la investigación de operaciones, teoría de algoritmos y teoría de la complejidad computacional. También está relacionada con otros campos, como la inteligencia artificial e ingeniería de software. Los algoritmos de optimización combinatoria resuelven instancias de problemas que se creen ser difíciles en general, explorando el espacio de soluciones (usualmente grande) para estas instancias. Los algoritmos de optimización combinatoria logran esto reduciendo el tamaño efectivo del espacio, y explorando el espacio de búsqueda eficientemente.


Los algoritmos de optimización combinatoria a menudo son implementados en lenguajes imperativos como C y C++,en lenguajes de programación lógicos tales como Prolog, o incluso en lenguajes multi-paradigma tales como Oz.

Mediante el estudio de la teoría de la complejidad computacional es posible comprender la importancia de la optimización combinatoria. Los algoritmos de optimización combinatoria se relacionan comúnmente con problemas NP-hard. Dichos problemas en general no son resueltos eficientemente, sin embargo, varias aproximaciones de la teoría de la complejidad sugieren que ciertas instancias (ej. "pequeñas" instancias) de estos problemas pueden ser resueltas eficientemente. Dichas instancias a menudo tienen ramificaciones prácticas muy importantes.

COMPLEJIDAD COMPUTACIONAL:
La complejidad es O(n3),  Complejidad cúbica.
Suele darse en bucles con triple anidación. Si n se duplica, el tiempo de ejecución se multiplica por ocho. Para un valor grande de n empieza a crecer dramáticamente.







◦Contamos con una computadoracapaz de procesar datos en 10-4 seg. En esta computadora se ejecuta un algoritmo que lee registros de una base de datos, dicho algoritmo tiene una complejidad exponencial 2n, ¿Cuánto tiempo se tardará en procesar una entrada n de datos?


◦Ahora se tiene la misma computadora capaz de procesar datos en 10-4 seg. Pero se ejecuta un algoritmo que hace el mismo trabajo antes citado, pero este algoritmo tiene una complejidad cúbica n3, ¿Cuánto tiempo se tardará en procesar una entrada n de datos?

Se puede decir, que solo un algoritmo eficiente, con un orden de complejidad bajo, puede tratar grandes volumen de datos, se razona que un algoritmo es:
-Muy eficiente si su complejidad es de orden log n
-Eficiente si su complejidad es de orden na
-Ineficiente si su complejidad es de orden 2n
-Se considera que un problema es tratable si existe un algoritmo que lo resuelve con complejidad menor que 2n, y que es intratable o desprovisto de solución en caso contrario.




PSEUDOCODIGO DEL ALGORITMO:
 Esta es la liga donde encontre la informacion detallada sobre cada paso, y lo que se debe de tomar en cuenta.
http://www.public.iastate.edu/~ddoty/HungarianAlgorithm.html


ANALISIS ASINTOTICO DEL ALGORITMO (logaritmico, polinomial, exponencial):
Este algoritmo es de claser P, ya  que existe un algoritmo que puede resolverse en tiempo polinómico, algo que para valores razonables podrá resolverse en un ordenador mediante un programa adecuado.


ESTRUCTURA DE DATOS UTILIZADA (arreglos, listas, colas, pilas, arboles):
La estructura mas utilizada es: colas, pues proporciona una base teorica del tipo de servicio que podemos espeerar de un determinado recurso, como la forma en la que dicho recurso puede ser diseñado para proporcionar un determinado grado de servicio a sus clientes.

Los sistemas de colas son modelos de sistema que proporcionan servicio. Como modelo pueden determinar cualquier sistema en donde los trabajos o clientes llegan buscando un servicio de algun tipo, y salen despues de que dicho servicio haya sido atendido.
Podemos modelar los sistemas de este tipo, tanto como colas sencillas o como un sistema de colar interconectadas, formando una red de colas.

EJEMPLO (manual, programado, animado):
http://www.tu.tv/videos/metodo-hungaro

1. Localice el menor elemento de cada renglón y réstelo a los demás elementos del mismo renglón. Repítase este procedimiento para cada columna donde el mínimo por columna se determina después de las restas de los renglones.
2. Determine si existe una asignación factible que involucre costos cero en la matriz revisada de costos. Si existe tal asignación es óptima. Si no existe continúe con el paso 3.
3. Cubra todos los ceros en la matriz revisada de costos con el menor número de líneas horizontales y verticales que sea posible. Cada línea horizontal debe pasar por todo el renglón y cada línea vertical por toda la columna. Localice el número menor que no esté cubierto por una línea en la matriz de costos. Reste el valor de este número a cada elemento no cubierto por una línea y súmelo a cada elemento cubierto por dos líneas.
4. Repita el procedimiento del paso 2.
EJEMPLO:
Una competencia de relevos de 400 metros incluye a cuatro diferentes nadadores quienes nadan sucesivamente 100 metros de dorso, pecho, mariposa y libre. Un entrenador tiene 6 nadadores muy veloces cuyos tiempos esperados en segundos en los eventos individuales se dan en la tabla ¿Cómo deberá el entrenador asignar los nadadores a los relevos a fin de minimizar la suma de sus tiempos?






APLICACIONES (donde se presenta el problema):
Cuando existe dilema, sobre la asignacion de una persona o un servicio hacia una respuesta o trabajo, a fin de que se solucione el primer planteamiento, y sea eficaz y util para quien lo necesita.



EN QUE SE USA ESTE ALGORITMO:
Este algoritmo se usa para resolver problemas de minimización, ya que es más eficaz que el empleado para resolver el problema del transporte por el alto grado de degeneración que pueden presentar los problemas de asignación.




*ALGUNAS DEFINICIONES MENCIONAN VARIOS EJEMPLOS.
*Estos licks son algunos de los que hice mi investigacion*
http://www.itlalaguna.edu.mx/Academico/Carreras/industrial/invoperaciones1/u5.HTML
http://www.scribd.com/doc/62765/memmetpp
http://www.monografias.com/trabajos27/complejidad-algoritmica/complejidad-algoritmica.shtml
 http://www.scribd.com/doc/7046323/EL-METODO-HUNGARO...

25 de abril de 2010

PROYECTO 4 (Ordenamiento por el metodo de la burbuja)

QUE HICE YO....
Fue un poco raro, ya que habiamos escogido otro tema, decidimos cambiar el tema por uno que quedo al aire.
En el tema ya definido y el que es de presentacion es el de bubble sort, entre las colaboraciones grupales, se puede deducir que hice la animacion que explica graficamente por que se le nombra asi al metodo de la burbuja, asi como su explicacion, tambien el ejemplo ejecutado del codigo, para que fuera mas clara la exposicion.
EN QUE ASPECTOS ESTOY BIEN...
Creo que estoy bien, en el manejo del codigo, anque cada quien tiene su estilo al programar, ya que ahi cosas que no entiendo, pues unas son cosas nuevas.
Tambien en la preparacion del tema, la investigacion para prepararme para exponer mi parte de la presentacion.
Y sobre todo ahi que tomar un aspecto que se nos olvida, que es la Responsabilidad de brindar una buena clase, y sobre todo entender lo que se esta diciendo, por que he visto, que unas personas solo leen la diapositiva.

EN QUE ASPECTOS ME HACE FALTA MEJORAR....
En la distribucion del tiempo, acabo de entender que no hay prioridades en cuanto a tareas, todas son importantes y merecen su tiempo, por eso, tratare de hacer las cosas y los pendientes en cuanto me las encargan.
En practicar mas sobre los temas que vamos viendo en clase, para entenderle al 100% lo que vemos cada semana, e ir preparandome para el examen, para no esperar solo a los proyectos o las tareas que lleguen a encargar para practicar.

AYUDO A LOS DEMAS O ME APOYO EN ELLOS.....
Considero que algunas veces los ayudo, jamas me apoyo, pero tampoco ahi que ayudarlos mucho, por que hay que saber, que nunca debes de contar con que cierta persona te va a solucionar cierto problema, hay que resolverlos muchas de las veces, por nuestra cuenta, "Rascarse con sus propias uñas".
Pero tampoco ser egoistas, pues en algo que pueda ayudar, mis amigos y algunos compañeros saben que siempre los ayudo, pues algun dia se me pude ofrecer ami, y no me gustaria que me hicieran mala cara "Siembras lo que cosechas".

QUIEN SE ENCARGA DE COORDINAR EL TRABAJO...
Entre mi compañera Daniela Aguilar y yo coordinamos el trabajo, ya que inicialmente decidimos juntarnos para formar el equipo para este proyecto, y ya mis otros compañeros se integraron un poco mas tarde.

QUE PAPEL TOMO YO...
Entre la gama que se puede desplegar sobre este comentario, considero que el mas correcto y honesto seria....
La preocupacion, responsabilidad y enojo, ya que tengo un caracter extraño, y la verdad me estreso cuando las cosas no salen como las planeamos, pero eso la mayoria de las veces me ha llevado a hacer las cosas bien, para no caer en desesperaciones, lo malo es cuando el tiempo se viene encima, y hace que las cosas te salgan peor, lo bueno que he aprendido es a tomar las cosas tranquila, y CON TIEMPO, y asi casi todo ha salido perfecto....
Pero yo soy del tipo de personas que no perdona una falta de responsabilidad en algun trabajo, por eso en ciertos casos, prefiero hacerlos por mi cuenta, ya que es un equipo, y parte de la calificacion es grupal, y pienso que no es justo que unas personas trabajen y otras no.
(Experiencias adquiridas al transcurso de mi vida, como expositora de temas en equipos)


************************************************************************
PRESENTACION
LIGA DE LA PRESENTACION:
http://www.slideshare.net/agatapato/bubble-sort-algcomp

LIGA A LOS BLOGS, DE MIS COMPAÑERAS:
Daniela Analí Aguilar Guerra
Dora Nelly Gonzalez Martinez

21 de abril de 2010

Representacion y manipulacion de arboles.

Esta en una tarea extra, sobre arboles binarios, es informacion de wikipedia, me despejo las dudas.

Un árbol binario de búsqueda es un tipo particular de árbol binario que presenta una estructura de datos en forma de árbol usada en informática.


Todo árbol vacío es un árbol binario de búsqueda.
Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si:
• En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo
almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario
de búsqueda.

• En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo
almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario
de búsqueda.

Puede haber distintos árboles binarios de búsqueda para un mismo conjunto de elementos.

El interés de los árboles binarios de búsqueda (ABB) radica en que su recorrido en inorden proporciona los elementos ordenados de forma ascendente y en que la búsqueda de algún elemento suele ser muy eficiente.
Dependiendo de las necesidades del usuario que trate con una estructura de este tipo se podrá permitir la igualdad estricta en alguno, en ninguno o en ambos de los subárboles que penden de la raíz. Permitir el uso de la igualdad provoca la aparición de valores dobles y hace la búsqueda más compleja.
BUSQUEDALa búsqueda consiste acceder a la raíz del árbol, si el elemento a localizar coincide con éste la búsqueda ha concluido con éxito, si el elemento es menor se busca en el subárbol izquierdo y si es mayor en el derecho. Si se alcanza un nodo hoja y el elemento no ha sido encontrado se supone que no existe en el árbol. Cabe destacar que la búsqueda en este tipo de árboles es muy eficiente, representa una función logarítmica. El maximo número de comparaciones que necesitaríamos para saber si un elemento se encuentra en un árbol binario de búsqueda estaría entre [log2(N+1)] y N, siendo N el número de nodos. La búsqueda de un elemento en un ABB (Árbol Binario de Búsqueda) se puede realizar de dos formas, iterativa o recursiva.



Ejemplo de versión iterativa en el lenguaje de programación C, suponiendo que estamos buscando una clave alojada en un nodo donde está el correspondiente "dato" que precisamos encontrar:


data Buscar_ABB(abb t,clave k)
{
abb p;
dato e;
e=NULL;
p=t;
if (!estaVacio(p))
{
while (!estaVacio(p) && (p->k!=k) )
{
if (k < p->k)
{
p=p->l;
}
if (p->k < k)
{
p=p->r;
}
}
if (!estaVacio(p) &&(p->d!=NULL) )
{
e=copiaDato(p->d);
}
}
return e;
}

Inserción
La inserción es similar a la búsqueda y se puede dar una solución tanto iterativa como recursiva. Si tenemos inicialmente como parámetro un árbol vacío se crea un nuevo nodo como único contenido el elemento a insertar. Si no lo está, se comprueba si el elemento dado es menor que la raíz del árbol inicial con lo que se inserta en el subárbol izquierdo y si es mayor se inserta en el subárbol derecho. De esta forma las inserciones se hacen en las hojas.


Como en el caso de la búsqueda puede haber varias variantes a la hora de implementar la inserción en el TAD (Tipo Abstracto de Datos), y es la decisión a tomar cuando el elemento (o clave del elemento) a insertar ya se encuentra en el árbol, puede que éste sea modificado o que sea ignorada la inserción. Es obvio que esta operación modifica el ABB perdiendo la versión anterior del mismo.

PROC InsertarABB(árbol:TABB; dato:TElemento)

VARIABLES
ele:TElemento
INICIO
SI (ABBVacío(árbol)) ENTONCES
árbol <- NUEVO(TNodoABB)
árbol^.izq <- NULO
árbol^.der <- NULO
árbol^.elem <- dato


EN OTRO CASO


ele = InfoABB(árbol)
SI (dato.clave < ele.clave) ENTONCES
InsertarABB(árbol^.izq, dato)

EN OTRO CASO


InsertarABB(árbol^.dch, dato)
FINSI
FINSI
FIN

Eliminacion:
La operacion de borrado es mas complicada, que las de busqueda e insercion.
Hay varios casos que tomar en cuenta:

*Borrar un nodo sin hijos o nodo hoja, solo se borra y se establece a nulo el apuntado de su padre.
*Borrar un nodo con un subarbol hijo: se borra elnodo y se asigna su subarbol hijo como subarbol su padre.
*Borrar un nodo con dos subárboles hijo: la solución está en reemplazar el valor del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente borrar este nodo.


Su predecesor en inorden será el nodo más a la derecha de su subárbol izquierdo (mayor nodo del subarbol izquierdo), y su sucesor el nodo más a la izquierda de su subárbol derecho (menor nodo del subarbol derecho).


ya repasando entiendo un poco mejor.
esta informacion la encontre en : wikipedia// arboles binarios

12 de marzo de 2010

Proyecto 3: Verificacion de Palindromos


RECURSION:
Es cuando una función se llama a si misma, (recursividad).

PARA QUE SIRVE:
Es para calcular un problema mas facilmente, por que cuando un módulo se llama a si mismo en  cada llamada al modulo se disminuye la dificultad hasta que ya no es necesario hacerlo y el problema se resuelve.

NO USARLO CUANDO...
Cuando no se necesita que tu programa recura a funciones que ya se utilizaron, osea cuando no hay que regresarse, (cuando no es como un circulo, con una salida).

EJEMPLO...
El cálculo de números factoriales. El factorial de 0 está definido específicamente como 1. El factorial de n, un entero mayor que 0, es el producto de todos los enteros del intervalo comprendido entre 1 y n.


TRABAJO EN EQUIPO...
Nos repartimos el trabajo a la mitad, ya que somos 4 personas, dos nos toco lo de iteratividad, y al resto lo de recursividad.
Por falta de tiempo no nos juntamos fisicamente, pero estuvimos en contacto, gracias al internet,
Cada equio hizo un programa,  aunque tuvimos diferencias, todo se llevo a flote.

FORTALEZAS:
Entendi que al decir grupo o equipo, la mayoria de las veces se reparten las cosas, y la verdad no es un trabajo en equipo, si no un tranajo repartido.
Pero eso es en cierto aspecto bueno, pues ahi personas que trabajan mejor solas, que con gente a su alrededor, hablando en el area de la concentracion.

AREAS DE OPORTUNIDAD:
No entendi bien este punto,
Veo oportunidad en el trabajo en equipo de minimizar el tiempo de entrega de los trabajos, repartiendolo entre los compañeros, y al final si ahi dudas internas, entre todos solucionarlas.

CONTRIBUCION AL TRABAJO:
Pues  mi contribucion al trabajo creo que fue la reparticion del trabajo.
En cuanto al proyecto, pues en conjuncion con Daniela, planteamos el boceto de nuestro progama, para despues modificarlo, conforme los requirimientos de la Dra.

COMPARACION DE MI TRABAJO CON EL DE LOS DEMAS:
La verdad no me agradan las comparaciones, pienso que a la hora de ver el trabajo y preguntarle a las personas que lo hicieron, con las respuestas se ve la aportacion y el interes que cada quien le pone, y asi es la mejor manera que calificar o de darse cuenta quien en verdad hace las cosas, quien le entiende, y quien se copia.

MEJORAR EL FUTURO:
Refiriendome al un trabajo en equipo a futuro, pues lo mejoraria escogiendo bien a mis compañeros, por que la calificacion que nos daran, imagino que sera grupal, y siempre habra quien trabajo mas que otros, por eso es necesario tomar en cuenta los horarios de los demas, para buscar una mejor union como equipo.

BLOGS DE MIS COMPAÑEROS:
Daniela Aguilar
Hector Tinajero
Salomon Karr



http://www.slideshare.net/danielaaguilar/palindromos

5 de marzo de 2010

**Proyecto 2**....Bin packing "Empacado de contenedores"




DESCRIPCION: 
 En el  problema de empacado de contenedores, los objetos deben ser envasados en un numero finito de cubos de capacidad, minimizando el uso de contenedores utilizados.
Existen variaciones de muchos de este problema, como en 2D de embalaje, de embalaje lineal, en peso, embalaje, empaquetado por el costo, y así sucesivamente,
lo tratare de comprender y de hacer de acuerdo al espacio de contenedor declaradas por mi, calculando la cantidad maxima de articulos que se pueden guardar sin riesgos.

 
DEFINICION MATEMATICA:
Dado el tamaño bin V, y una lista @1...@n, de tamaños de los articulos para empacar, encontrar un numero entero A-A particion de

 de tal manera que
para todos


UNA SOLUCION OPTIMA SI TIENE B-MINIMO, El B-valor, para una solucion optima se denota OPT.



EJEMPLO DE INSTANCIA, SOLUCION OPTIMA:
El algoritmo del proceso es en orden arbitrario, para cada objeto, los intentos de colocar el objeto en la primera bandeja que puede albergar el objeto. Si no se encuentra bin, se abre una nueva carpeta y pone el objeto en el inicio de nuevo.

Consigue un factor de aproximación de 2.


PROBLEMA DE DECISION:Es imposible para 2 contenedores de estar en la mayoría de la mitad. La razón es que si en algún momento fue un cubo en la mayoría de la mitad, lo que significa que tiene al menos un espacio de V / 2, el algoritmo no se abre una nueva carpeta para cualquier elemento cuyo tamaño es en la mayoría de V / 2. Sólo después de la bandeja se llena con más de V / 2 o si un elemento con un tamaño mayor que V / 2 llega, el algoritmo se puede abrir una nueva carpeta.


Se tiene que verificar, si los objeto que necesito guardar, equivalen a menos de la cantidad  del espacio del contenedor.
OB <= MDE
OB= objetos, mientras que MDE se define como la mitad del espacio del contenedor.


ALGORITMO DE DECISION:
Se calcula si la cantidad total de dimension de los articulos es menor o igual a la dimension total de un contenedor.
Pidiendole al usuario las cantidades reales, y haciendo las operaciones con las funciones adecuadas


Explicar la COMPLEJIDAD ASINTOTICA:
La cota superior asintótica tiene gran importancia en Teoría de la complejidad computacional a la hora de definir las clases de complejidad.
f(x)=O(g(x))A pesar de que contenedores(g(x)) está definido como un conjunto, se acostumbra escribir  f(x)=O(g(x)) en lugar de f(x)∈O(g(x)). Muchas veces también se habla de una función nombrando únicamente su expresión, como en x² en lugar de h(x)=x², siempre que esté claro cual es el parámetro de la función dentro de la expresión. En la gráfica se da un ejemplo esquemático de como se comporta cg(x) con respecto a f(x) cuando x tiende a infinito.




La cota ajustada asintótica (notación Θ) tiene relación con las cotas asintóticas superior e inferior (notación Ω):
f(x) = Θ(g(x)) si y solo si f(x) = O(g(x)) y f(x) = Ω(x)
Esto quiere decir que se pueden guardar la cantidad maxima de articulos, sin rebasar el espacio a utilizar del contenedor.



El problema de desicion pertenece a P y a  NP,
puesto que los algoritmos recuersivos, se puedes hacer iterativos, con una  solucion mas optima, sin embargo, los iterativos, no se pueden hacer recursivos, ya que intervienen mas aspectors, y en lugar de hacerlos mas faciles de entender, se convierten en mas complejos, disminuyendo la simplicidad que se busca.

Si, NP-completo es el subconjunto de los problemas de decisión en NP tal que todo problema en NP se puede reducir en cada uno de los problemas de NP-completo. Se puede decir que los problemas de NP-completo son los problemas más difíciles de NP y muy probablemente no formen parte de la clase de complejidad P.
La razón es que de tenerse una solución polinómica para un problema de NP-completo, todos los problemas de NP tendrían también una solución en tiempo polinómico (y por lo tanto, si se demuestra que para un problema NP-completo no existe solución en tiempo polinómico, ninguno de los problemas NP tendrá solución).



Existen varias respuestas de desicion, pero la que es mas efectiva, es la de relacionar la capacidad de contenedores, con el espacio que equivalen los articulos en el, para no saturar el contenedor, y usar los menores posibles, esto es:
Que si existe una sumatoria de articulos totales, para un numero minimo de contenedores, se pueda colocar los articulos repartidos equitativamente, en en el numero mas minimo de contenedores?

Argumentar si es Np-duro.
Es NP-Hard, por que hay varias maneras de encontrar una solucion buena, pero en algunos casos esta no es la mejor, la solucion optima, por medio de un algoritmo de ajuste, primero se da la solucion rapida, pero no la optima, colocando cada articulo en el contenedor, y si ya no caben pues en otro.


Se recomienda usar un algoritmo heuristicos para este tipo de problema, pues de este modo, se clasifican los articulos de acuerdo al volumen, y se relacionan con el espacio del contenedor, definiendo que todos los contenedores tienen la misma capacidad.


ALGORITMO PARA EL PROBLEMA DE OPTIMIZACION:
Se define la dimension de los contenedores, tomando en cuenta que todos tienen la misma capacidad y dimension.
Se pide la dimension de cada articulo, en caso de que sea mas de un tipo mismo de articulo
Y la cantidad de articulos a guardar,
Segun al cantidad primaria de articulos a guardar(multiplicandola por la dimension que ocupa, siendo de un mismo tipo), se resta este resultado a la dimension total de un contenedor, si el espacio que le resta al contenedor, y hay mas articulos en espera, se opta, por llenar todo el contenedor, sin triplicar el peso de todos los articulos, al peso del contenedor.



Explicar la complejidad asintotica de este algoritmo tambien.Usualmente se usa la notacion de Landu, para referirnos a las funciones acotadas superiormente, las cuales dependen de otras variables para que sea verdadero lo que se define:





 
Una contenedoresf(x) pertenece a articulos (g(x)) cuando existe una constante positiva c tal que a partir de una cantidad de articulos x0, f(x) no sobrepasa a contenedores(x). Quiere decir que la función f es inferior a g a partir de un valor dado salvo por un factor constante.

20 de febrero de 2010

PROYECTO 1, primer algoritmo

NOSOTROS ELEGIMOS HACER 3 DIAGRAMAS, pero solo terminamos dos, el del directorio, que es el que esta acontinuacion, dando por hecho que la persona que va a buscar el número, tiene conocimiento del alfabeto.
Nuestro diagrama inicia preguntandole al usuario si tiene directorio, pues como buscaria un numero en un directorio, si no tiene un directorio. Nos complicamos un poco al inicio pues, no sabiamos si, el algoritmo le tenia que arrojar un resultado al usuario, pero la Dra. Elisa, nos dijo que solo eran como instrucciones, o bueno mas bien eso le entendimos.
Ya con las ideas un poco claras, comenzamos a hacer el trabajo y terminamos en lo siguiente.

EL DIAGRAMA

EL PSEUDOCODIGO:
#include

#include
int dir;
main()
{

do{
do{
printf("Tienes un directorio?\n1.-Si\n2.-No\n");
scanf("%d",&dir);
if(dir==2)
printf("Consigue un directorio\n");
}while(dir==2);


printf("Busca la seccion de la primera letra del apellido\n");
getch();
printf("Busca el apellido identico al que buscas\n");
getch();
printf("Lo encontraste?\n1.-Si\n2.-No\n");
scanf("%d",&dir);

if(dir==1)
{
printf("\nExiste mas de un apellido igual\n1.-Si\n2.-No\n");
scanf("%d",&dir);
if(dir==1
dir==2)
{
printf("\nCompara el nombre completo\n");
getch();
printf("Es el que buscas\n1.-Si\n2.-No\n");
scanf("%d",&dir);
if(dir==1)
printf("\nFelicidades ya sbes usar un directorio\n");
else
printf("\n\nLa persona no se encuentra registrada en este directorio\n");
}
}
else
{
printf("\nLa persona no se encuentra registrada en este directorio\n");
}
getch();
clrscr();
printf("\Deseas hacer otra consulta?\n1.-Si\n2.-No\n");
scanf("%d",&dir);
}while(dir==1);
}

EJEMPLO 1

Inicia preguntando si el usuario tiene directorio, como en este caso, si tiene, pues arranca normalmente dandole las instrucciones al usuario para buscar el numero telefonico que necesita, mediante la persona titular de esa linea.
Cuando no encuentra el nombre de la persona, se hace saber al usuario que esta misma, no esta registrada en el directorio en el que la esta buscando.
Se le pregunta si desea hacer otra consulta, notece, que se inactiva, cuando
se le da la instruccion de que no se desea consultar otro numero.

EJEMPLO 2




































En este caso el usuario no tiene directorio, por lo cual la maquina se cicla, diciendole al usuario que consiga un directorio, y preguntandole si ya lo tiene, dando las instrucciones requeridas, hasta que el usuario tenga en su poder, un directorio para poder seguir las instrucciones.
Aqui el usuario desea hacer otra consulta por lo que se le repiten las instrucciones para que encuentre el siguiente numero de la persona que busca.
El programa no termina hasta que la persona le dice que no necesita hacer otra consulta.

LA INTERACCION USUARIO-MAQUINA SE DA, PRESIONANDO UN ENTER O CUALQUIER LETRA DESPUES DE CADA INSTRUCCION Y DANDOLE NUMEROS DE ACUERDO  A LAS OPCIONES QUE SE DAN A ELEGIR.

GABRIELA ALEMAN GARCIA  1410319
JUAN MANUEL CASANOVA VILLARREAL  1453829
DEL GRUPO DE LOS MARTES.