domingo, 31 de agosto de 2014

Matriz de la relación predecesor inmediato en c++. – Email – Lawyers – Law Firm – Registros

matriz de la relacion predecesor inmediato

Cuando aprendemos sobre reticulados nos enseñan un algoritmo para conseguir lamatriz de la relación de predecesores inmediatos de un CPO (Conjunto Parcialmente Ordenado) a partir de la matriz de la relación de orden [A,] donde A tiene n elementos.

El algoritmo sería el siguiente:

-Se calcula la matriz de la relación de orden M.

-Determinamos la matriz M = M- In . M es igual a la matriz de relación de orden menos la matriz identidad.

-Calculamos M^2 (M al cuadrado = MxM) haciendo una multiplicación binaria. Es decir, la matriz resultante solo contendrá unos y ceros como entradas.

-Hallamos M = M - M^2 (matriz de la relación predecesor inmediato). La matriz de la relación predecesor inmediato es igual a la matriz M menos la matriz M^2.

Ejercicio de ejemplo:

Dado el CPO [A, /] en dondeA = {200,60,30,10,5,1} y"/" es la relación binaria dedivisibilidad enA, (a/b si y sólo si "a" divide a "b") entonces: Hallar lamatriz de predecesores inmediatos.

Siguiendo el algoritmo calculamos la matriz M:
M=


1 divide a todo número real, por ello todas las entradas de esta fila de la matriz son 1.
5 divide a 5, 10, 30,60,200.
10 divide a 10,30,60,200.
30 divide a 30 y 60.
60 divide a 60.
200 divide a 200.

Siguiente paso, calculamos la matriz M que esta dada por M = M- In.

M=


In =


M = M- In

M =



Luego, calculamos M^2:

M^2 = M x M

X

M^2 =



Finalmente, hallamos la matriz de la relación predecesor inmediato.

M = M - M^2

M =





Una buena opción es desarrollar este algoritmo en algún lenguaje de programación que conozcamos, con el fin de aprender un poco más y a su vez comprobar los ejercicios que realizamos en nuestras horas de estudio. Este algoritmo lo podemos desarrollar enc++ de la siguiente forma:

#include iostream

using namespace std;

int main(){
int filas, colum;
cout "Ingrese la cantidad de filas de la matriz de la relación de orden: " endl;
cin filas;
cout "Ingrese la cantidad de columnas de la matriz de la relación de orden: " endl;
cin colum;
int matrizRO[filas][colum]; //matriz de relación de orden
int matrizRO2[filas][colum];
int matrizm2[filas][colum];
int matrizPI[filas][colum];
// Ingresamos las entradas de la matriz de relación de orden
cout "Ingrese las entradas de la matriz de la relación de orden" endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout "Ingrese la entrada a" i j endl;
cin matrizRO[i][j];
}
}
// Restamos la matriz identidad a nuestra matriz
for(int diagonal = 0; diagonal colum; diagonal++)
{
matrizRO[diagonal][diagonal] = 0;
}

//Imprimimos el valor de M

cout "Matriz M: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizRO[i][j] " ";
}
cout endl;
}

//segunda matriz

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizRO2[i][j] = matrizRO[i][j];
}
}

//

//Calculamos M^2 (Binarizada)
for(int i=0;ifilas;i++){
for(int j=0;jcolum;j++){
matrizm2[i][j]=0;
for(int k=0;kcolum;k++){
if(matrizRO[i][k] == 1 and matrizRO2[k][j] == 1)
matrizm2[i][j] = 1;
}
}
}
// Imprimimos M^2
cout "Matriz M^2: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizm2[i][j] " ";
}
cout endl;
}

//Calculamos la matriz de la relación predecesor inmediato

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizPI[i][j] = matrizRO[i][j] - matrizm2[i][j];
}
}

//Imprimimos la matriz de la relación predecesor inmediato

cout "Matriz de la relación predecesor inmediato: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizPI[i][j] " ";
}
cout endl;
}

return 0;
}

int matrizRO[filas][colum]; //matriz de relación de orden
int matrizRO2[filas][colum];
int matrizm2[filas][colum];
int matrizPI[filas][colum];

La matrizRO representa la matriz de relación de orden, la matrizRO2 contiene las mismas entradas que la anterior, esta se usará solo para realizar la multiplicación para obtener M^2.
La matrizm2 representa la matriz M^2.
La matrizPI representa la matriz de la relación de predecesores inmediatos.

int filas, colum;
cout "Ingrese la cantidad de filas de la matriz de la relación de orden: " endl;
cin filas;
cout "Ingrese la cantidad de columnas de la matriz de la relación de orden: " endl;
cin colum;

Inicialmente ingresamos la cantidad de filas y columnas que tiene nuestra matriz. Dicha matriz es una matriz cuadrada de orden nxn.

// Restamos la matriz identidad a nuestra matriz
for(int diagonal = 0; diagonal colum; diagonal++)
{
matrizRO[diagonal][diagonal] = 0;
}

Para encontrar el valor de M solo debemos anular la diagonal principal de nuestra matriz.

//Calculamos M^2 (Binarizada)
for(int i=0;ifilas;i++){
for(int j=0;jcolum;j++){
matrizm2[i][j]=0;
for(int k=0;kcolum;k++){
if(matrizRO[i][k] == 1 and matrizRO2[k][j] == 1)
matrizm2[i][j] = 1;
}
}
}

Calculamos M^2 con el anterior algoritmo, tomar en cuenta que como es una matriz binarizada solo tendrá ceros y unos. Al conseguir una coincidencia de dos 1 almacenamos 1 en la matriz M^2.

//Calculamos la matriz de la relación predecesor inmediato

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizPI[i][j] = matrizRO[i][j] - matrizm2[i][j];
}
}

Calculamos la matriz de la relación de predecesor inmediato con la diferencia entre la matriz M y M^2.

Resolviendo el ejercicio anterior con nuestro programa de consola hecho en c++, ésta sería su ejecución:

Ingrese la cantidad de filas de la matriz de la relación de orden:
6
Ingrese la cantidad de columnas de la matriz de la relación de orden:
6
Ingrese las entradas de la matriz de la relación de orden
Ingrese la entrada a00
1
Ingrese la entrada a01
1
Ingrese la entrada a02
1
Ingrese la entrada a03
1
Ingrese la entrada a04
1
Ingrese la entrada a05
1
Ingrese la entrada a10
0
Ingrese la entrada a11
1
Ingrese la entrada a12
1
Ingrese la entrada a13
1
Ingrese la entrada a14
1
Ingrese la entrada a15
1
Ingrese la entrada a20
0
Ingrese la entrada a21
0
Ingrese la entrada a22
1
Ingrese la entrada a23
1
Ingrese la entrada a24
1
Ingrese la entrada a25
1
Ingrese la entrada a30
0
Ingrese la entrada a31
0
Ingrese la entrada a32
0
Ingrese la entrada a33
1
Ingrese la entrada a34
1
Ingrese la entrada a35
0
Ingrese la entrada a40
0
Ingrese la entrada a41
0
Ingrese la entrada a42
0
Ingrese la entrada a43
0
Ingrese la entrada a44
1
Ingrese la entrada a45
0
Ingrese la entrada a50
0
Ingrese la entrada a51
0
Ingrese la entrada a52
0
Ingrese la entrada a53
0
Ingrese la entrada a54
0
Ingrese la entrada a55
1
Matriz M:
0 1 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
Matriz M^2:
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
Matriz de la relación predecesor inmediato:
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0

Optimizando el algoritmo en c++:

El código fuente del algoritmo hecho en c++ está escrito con el mayor detalle posible con el fin de que pueda ser entendido fácilmente. Sin embargo, este puede ser optimizado evitando la creación de algunas matrices no tan necesarias y algunos ciclos repetitivos for. Esto con el fin de minimizar el tiempo de ejecución y reducir el espacio utilizado en la memoria.

#include iostream

using namespace std;

int main(){
int n;
char respuesta;
do{
cout "Ingrese el valor de n para su matriz de orden nxn " endl;
cin n;
int matrizR[n][n]; //matriz de relación de orden y luego de la relación predecesor inmediato.
int matrizm2[n][n];
// Ingresamos las entradas de la matriz de relación de orden
cout "Ingrese las entradas de la matriz de la relación de orden" endl;
for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
cout "Ingrese la entrada a" i j endl;
cin matrizR[i][j];
//Anulando diagonal principal al momento de ingresar la matriz
if(i == j)
matrizR[i][j] = 0;
}
}

//Calculamos M^2 (Binarizada)
for(int i=0;in;i++){
for(int j=0;jn;j++){
matrizm2[i][j]=0;
for(int k=0;kn;k++){
if(matrizR[i][k] == 1 and matrizR[k][j] == 1){
matrizm2[i][j] = 1;
            break;
            }
}
}
}

//Calculamos la matriz de la relación predecesor inmediato y la imprimimos al mismo tiempo
cout "Matriz de la relación predecesor inmediato:" endl;
for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
matrizR[i][j] = matrizR[i][j] - matrizm2[i][j];
cout matrizR[i][j] " ";
}
cout endl;
}
cout "Desea obtener una nueva matriz de la relación predecesor inmediato a partir de otra matriz de relación de orden? si = s no = n" endl;
cin respuesta;
}while(respuesta == 's');
return 0;
}

Inicialmente ingresamos el valor de n, la matriz de la relación de orden es una matriz cuadrada de orden nxn.

Mientras ingresamos las entradas o componentes de la matriz podemos ir anulando automática la diagonal principal, esto lo hacemos cuando los índices i y j son iguales.

if(i == j)
matrizR[i][j] = 0;

Para obtener la matriz M^2 solo necesitaremos conseguir un 1, recordemos que esta matriz debe estar binarizada. Por ello le agregamos el break al ciclo de manera que cuando encuentre un 1 salga del ciclo y no ejecute instrucciones innecesarias.

if(matrizR[i][k] == 1 and matrizR[k][j] == 1){
matrizm2[i][j] = 1;
break;
}

Al momento de obtener la matriz de la relación predecesor inmediato podemos guardar el resultado en la misma matriz inicial, además podemos ir imprimiendo los resultados en paralelo se van obteniendo.

for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
matrizR[i][j] = matrizR[i][j] - matrizm2[i][j];
cout matrizR[i][j] " ";
}
cout endl;
}

Descarga del código fuente del proyecto:
http://www.mediafire.com/download/urr...


También te podría interesar:
4 Ejercicios Básicos de Programación Orientada a Objetos en c++
De sistema decimal a sistema binario en c++ y Java
3 libros sobre programacion orientada a objetos
[Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas

Business finance group mesothelioma law suits Life Insurance Co Lincoln Php programmers for hire CAR ACCIDENT LAWYERS Claim NUNAVUT CULTURE Italian cooking school Social media management baltimore mesothelioma attorneys dallas mesothelioma attorneys buyers of structured settlements diagnosed with mesothelioma car insurance quotes colorado DAYTON FREIGHT LINES DONATING USED CARS TO CHARITY Make money online Australia structured settlement buyer car insurance in south dakota Online casino DONATE CARS IN MA Business Voip Solutions mesothelioma settlements amounts Motor replacements accident attorney san bernardino Mortgage Psd to WordPress PAPERPORT PROMOTIONAL CODE alcohol rehab center in florida Criminal defense attorneys Florida structured settlement brokers DALLAS MESOTHELIOMA ATTORNEYS miami personal injury lawyer mesothelioma lawyer houston Live casino Hire php developers Mesothelioma Law Firm Psd to html Donating a car in Maryland MASSAGE SCHOOL DALLAS TEXAS Casino Insurance Companies Mobile casino Online Christmas cards cash out structured settlement Donate your Car for Money Custom WordPress theme designer Casino reviews mesothelioma charities Automobile Accident Attorney integrated ehr Cheap car insurance for ladies PHD on Counseling Education california law lemon Better conferencing calls donate your car for money AUTOMOBILE ACCIDENT ATTORNEY selling structured settlement DUI lawyer Asbestos Lawyers Hire php programmers miami personal injury attorney verizon sip attorney lawyer mesothelioma mesothelioma lawsuit Online Criminal Justice Degree Php programmers CAR INSURANCE QUOTES COLORADO ONLINE MOTOR INSURANCE QUOTES selling annuity payments for cash home phone internet bundle los angeles motorcycle accident lawyer how to donate a car in california wisconsin mesothelioma attorney Dwi lawyer Criminal lawyer online colledges donate your car for kids mesothelioma attorney directory Cheap Car Insurance in Virginia Social media platforms for business Paperport Promotional Code boca raton personal injury attorney Car Insurance in South Dakota Service business software Criminal defense lawyer truck accident attorney texas ashely madis colorado auto accident attorney adverse credit remortgage mesothelioma law firm Hire php developer Donate car to charity California CHEAP CAR INSURANCE IN VIRGINIA Custom Christmas cards personal injury lawyer Seo companies Bankruptcy lawyer Computer science classes online Best social media platforms for business compare life assurance LOW CREDIT LINE CREDIT CARDS Best Criminal Lawyers in Arizona mesothelioma lawyer texas New social media platforms Donating a Car in Maryland injury lawyers Forensics Online Course asbestos exposure lawyers How to Donate A Car in California structured settlement blog Car Insurance Companies Virtual Data Rooms DONATE YOUR CAR SACRAMENTO Seo services st louis mesothelioma attorney Mortgage Adviser Criminal lawyer Miami illinois mesothelioma lawyer business voip solutions Criminal Defense Attorneys Florida Best social media platforms Best Seo company Business management software Car Donate Seo company DONATING A CAR IN MARYLAND Register Free Domains mortgage adviser webex costs Donate Old Cars to Charity hair removal washington dc Photo Christmas cards Hard drive Data Recovery Services WordPress themes for designers Tech school Personal Injury Lawyers Car Insurance Quotes Utah WordPress hosting Social media examiner criminal defense attorneys florida student loan consolidation program WordPress theme designers personal injury lawyer sarasota fl asbestos lung cancer Motor Replacements Html email Social media platforms Christmas cards Proud Italian cook lease management software online criminal justice degree onlineclasses Learning adobe illustrator structured settlement quote criminal defense federal lawyer Annuity Settlements mesothelioma claims buying structured settlements Adobe illustrator classes Social media strategies Auto Accident Attorney Social media tools Social media campaigns Donate Car to Charity California LIFE INSURANCE CO LINCOLN DONATE A CAR IN MARYLAND structured settlement sell Donate Car for Tax Credit Donate Cars in MA Donate Your Car Sacramento Sell Annuity Payment Online Colleges Donate Your Car for Kids Donating Used Cars to Charity VIRTUAL DATA ROOMS Webex Costs Donating used cars to charity virtual data rooms Structures Annuity Settlement Car Insurance Quotes Colorado Nunavut Culture mesothelioma trial attorney DONATE OLD CARS TO CHARITY Dayton Freight Lines Donate a Car in Maryland Hard drive data recovery services Cheap Domain Registration Hosting washington mesothelioma attorney Donate Cars Illinois cash out annuity SELL ANNUITY PAYMENT Auto Mobile Insurance Quote Car insurance quotes MN Psychic for Free CRIMINAL DEFENSE ATTORNEYS FLORIDA Holland Michigan College Online Motor Insurance Quotes purchase structured settlements Insurance mesothelioma claim Online Classes auto accident attorney Torrance World Trade Center Footage Massage School Dallas Texas accident attorney in los angeles mesothelioma attorneys Low Credit Line Credit Cards Dallas Mesothelioma Attorneys motor replacements Cheap Auto Insurance in VA business voice mail service Car Insurance Quotes MN hughes net business EMAIL BULK SERVICE Car insurance quotes Colorado sell my structured settlement auto insurance yuba city ca Email bulk service Met Auto Home Phone Internet Bundle Health Records Personal Health Record saskatchewan auto insurance Neuson Car Insurance Quotes PA Royalty Free Images Stock forensics online course domains yahoo Email Bulk Service MESOTHELIOMA LAW FIRM CHEAP DOMAIN REGISTRATION HOSTING los angeles auto accident attorneys seattle mesothelioma lawyer BEST CRIMINAL LAWYER IN ARIZONA Cheap Car Insurance for Ladies motorcycle lawyer los angeles Better Conference Calls Futuristic Architecture FORENSICS ONLINE COURSE mesothelioma Online College Course accident lawyers in los angeles mesothelioma settlements georgia truck accident lawyer BETTER CONFERENCING CALLS life insurance co lincoln Car Accident Lawyers auto accident lawyer san francisco better conferencing calls Data Recovery Raid

No hay comentarios:

Publicar un comentario