Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TRABAJO ENCARGADO:
SEMESTRE: X
PRESENTADO POR:
CODIGO:130350
PUNO – PERU
2018
TOMA DE DECISIONES EN EL PROCESO
La toma de decisiones es el proceso mediante el cual se realiza una elección entre diferentes
opciones o formas posibles para resolver diferentes situaciones en la vida en diferentes
contextos: empresarial, laboral, económico, familiar, personal, social, etc.(utilizando
metodologías cuantitativas que brinda la administración). La toma de decisiones consiste,
básicamente, en elegir una opción entre las disponibles, a los efectos de resolver un problema
actual o potencial (aun cuando no se evidencie un conflicto latente).
En términos básicos, la toma de decisiones, es el proceso de definición de problemas,
recopilación de datos, generación de alternativas y selección de un curso de acción y se
define como “el proceso para identificar y solucionar un curso de acción para resolver un
problema específico”.
CARACTERÍSTICAS
La toma de decisiones a nivel individual se caracteriza por el hecho de que una persona haga
uso de su razonamiento y pensamiento para elegir una alternativa de solución frente a un
problema determinado; es decir, si una persona tiene un problema, deberá ser capaz de
resolverlo individualmente tomando decisiones con ese específico motivo. También, la toma de
decisiones es considerada como una de las etapas de la dirección.
DECISIONES NO PROGRAMADAS:
También denominadas no estructuradas, son decisiones que se toman ante problemas o
situaciones que se presentan con poca frecuencia, o aquellas que necesitan de un modelo o
proceso específico de solución, por ejemplo: “Lanzamiento de un nuevo producto al mercado”,
en este tipo de decisiones es necesario seguir un modelo de toma de decisión para generar una
solución específica para este problema en concreto.
Las decisiones no programadas abordan problemas poco frecuentes o excepcionales. Si un
problema no se ha presentado con la frecuencia suficiente como para que lo cubra una política o
si resulta tan importante que merece trato especial, deberá ser manejado como una decisión no
programada. Problemas como asignar los recursos de una organización, qué hacer con una
línea de producción que fracasó, cómo mejorar las relaciones con la comunidad –de hecho, los
problemas más importantes que enfrentará el gerente –, normalmente, requerirán decisiones no
programadas.
ALGORITMO DE JOHNS
El algoritmo de Johnson es una forma de encontrar el camino más corto entre todos los pares
de vértices de un grafo dirigido disperso. Permite que las aristas tengan pesos negativos, si bien
no permite ciclos de peso negativo. Funciona utilizando el algoritmo de Bellman-Ford para hacer
una transformación en el grafo inicial que elimina todas las aristas de peso negativo, permitiendo
por tanto usar el algoritmo de Dijkstra en el grafo transformado. Su nombre viene de Donald B.
Johnson, quien fuera el primero en publicar la técnica en 1977.
1. Primero se añade un nuevo nodo q al grafo, conectado a cada uno de los nodos del
grafo por una arista de peso cero.
2. En segundo lugar, se utiliza el algoritmo de Bellman-Ford, empezando por el nuevo
vértice q, para determinara para cada vértice v el peso mínimo h(v) del camino de q a v.
Si en este paso se detecta un ciclo negativo, el algoritmo concluye.
3. Seguidamente, a las aristas del grafo original se les cambia el peso usando los valores
calculados por el algoritmo de Bellman-Ford: una arista de u a v con tamaño w(u, v), da
el nuevo tamaño w(u, v) + h(u) – h(v)
4. Por último, para cada nodo s se usa el algoritmo de Dijkstra para determinar el camino
más corto entre s y los otros nodos, usando el grafo con pesos modificados.
En el grafo con pesos modificados, todos los caminos entre un par de nodos s y t tienen la
misma cantidad h(s) – h(t) añadida a cada uno de ellos, así que un camino que sea el más corto
en el grafo original también es el camino más corto en el grafo modificado y viceversa. Sin
embargo, debido al modo en el que los valores h(v) son computados, todos los pesos
modificados de las aristas son no negativos, asegurando entonces la optimalidad de los caminos
encontrados por el algoritmo de Dijkstra. Las distancias en el grafo original pueden ser
calculadas a partir de las distancias calculadas por el algoritmo de Dijkstra en el grafo
modificado invirtiendo la transformación realizada en el grafo.
ANÁLISIS DE LA COMPLEJIDAD
La complejidad temporal de este algoritmo, usando montículos de Fibonacci en la
implementación del algoritmo de Dijkstra, es de O(V2log V + VE): el algoritmo usa un tiempo de
O(VE) para la fase Bellman-Ford del algoritmo, y O(V log V + E) para cada una de
las V instancias realizadas del algoritmo de Dijkstra. Entonces, cuando el grafo es disperso el
tiempo total del algoritmo puede ser menor que el algoritmo de Floyd-Warshall, que resuelve el
mismo problema en un tiempo de O(V3).
EJEMPLO
Las etapas del algoritmo de Johnson están descritas en la siguiente
ilustración:
PSEUDOCÓDIGO
Tipos
Arista = REGISTRO
o : NATURAL
d : NATURAL
peso : INT
sig : NATURAL
FIN
LAristas = PUNTERO A Arista
TGrafo = ARRAY [1..N] DE LAristas
THv = ARRAY [1..N] DE ENTERO
TVector = ARRAY [1..N] DE ENTERO
TMatriz = ARRAY [1..N] DE TVector
//suponemos ig>1
PROC Johnson (↓grafo: TGrafo; ↓ig: NATURAL; ↑ distancias: TMatriz ;
↑ previos: TMatriz)
VARIABLES
i : NATURAL
p : LAristas
min_caminos : THv
aux_dist, aux_prev : TVector
INICIO
grafo[ig] ← nueva_arista(ig,1,0,NULO)
inc(ig)
p ← grafo[ig]
PARA i ← 2 HASTA ig-2 HACER
p^.sig ← nueva_arista(ig,i,0,NULO)
p ← p^.sig
FIN
BellmanFord(grafo,ig, min_caminos)
PARA i ← 1 HASTA ig-1 HACER
p ← grafo[i]
MIENTRAS (p != NULO) HACER
p^.peso ← p^.peso + min_caminos[p^.o] -
min_caminos[p^.d]
p ← p^.sig
FIN
FIN
PARA i ← 1 HASTA ig-2 HACER
Dijkstra(grafo,i, aux_dist,aux_prev) // devuelve los
caminos mínimos desde el último nodo
// a todos los demás
previos[i] ← aux_prev;
CalcularDistancias(grafo, previos, aux_dist,distancias); //
este algoritmo realiza la transformación inversa a la
//
que habíamos hecho antes sobre los pesos, para obtener
//
las distancias reales
FIN
FIN
CÓDIGO EN C++
#include <cstdlib>
using namespace std;
struct Arista{
unsigned o;
unsigned d;
int peso;
LAristas sig;
};
typedef LAristas Arista*;
//suponemos ig>1
void johnson(const TGrafo &grafo, int ig, TMatriz &distancias, TMatriz
&previos){
Arista* p;
TVector min_caminos;
TVector aux_dist;
TVector aux_prev;
grafo[ig] = nueva_arista(ig,1,0,NULL);
ig++;
p = grafo[ig];
for(unsigned i=2; i<=ig-2; i++){
p->sig = nueva_arista(ig,i,0,NULL);
p = p->sig;
}
BellmanFord(grafo,ig, min_caminos);
La implementación más adecuada del algoritmo de Dijkstra sería mediante montículos, ya que
es capaz de dar los mejores resultados para que el mismo algoritmo de Johnson sea más
eficiente.
REFERENCIAS