SlideShare a Scribd company logo
보고서
소속 : 자료구조 01분반 D0조

이름 : 20073547 홍진욱 , 20083430 강승우 , 20093447 김도형, 20093489 송하윤 ,20093516 장진승 ,
20073457 김재찬

과제수행기간: 14 일 3번 모임 총     5시간


I. 계획의 작성

 ①연구제목: 관계찾기
 ②연구배경: Database Management System

 ③참고자료:     :   Discrete Mathematics and its applications


 II. 목차

      1. 임무분담에 대하여 ( 2쪽 )


      2. 학습내용에 대하여 ( 3~5쪽 )


      3. 과제 1에 대한 소스 ( 6~8쪽 )


      4. 과제를 마치면서( 마지막 쪽 )


      ※ 모임은 (3/19,3/21) 2번 가졌으며 토의 내용에
        대하여 개인보고서 작성.
※ 임무 분담에 대하여



조장 : 김도형
보고서 작성, 최종 종합.

알고리즘 : 송하윤,김재찬
자연식의 계산 원리를 파악하여 프로그램에 대입하는 역할.


코딩 : 홍진욱
C 코딩 및 프로그램에 대하여 구조 개선 및 문제점 해결.


자료검토 및 스케줄 : 장진승
토론 계획 및 스케줄 관리 준비된 자료 재검토.


검색 및 토의종합 : 강승우
토의 한 내용 기록 및 문제 및 궁금점 조사.
※ 학습내용에 대하여
• binary relation
이항관계


• reflexive
관계 R이 정의된 집합의 모든 원소 a에 대해서 aRa가 성립하는 경우에 대해 R을 반사적 관계(reflexive)라고 한다.


• symmetric
집합의 두 원소 a, b에 대해서 a R b 관계가 성립할 때 b R a의 관계도 성립하면 R을 대칭성 관계라 한다.


• transitive
집합의 세 원소 a, b, c에 대해 a R b와 b R c 관계가 성립하면 a R c의 관계도 성립되는 것.(추이관계)


• equivalence relations
reflexive, symmetric, transitive를 모두 성립하는 관계


• equivalence class of x relative to R
집합R의 각각의 relative를 묶어 분할해 묶어놓은 class


• irreflexive
관계 R이 정의된 집합의 모든 원소 a에 대해서 aRa가 0인 경우에 대해 R을 반사적 관계(reflexive)라고 한다.


• antisymmetric
R이 그 집합에 속하는 임의의 원소 a, b에 대하여 aRb이고, bRb이면 a=b일 때의 관계.
reflexive와 symmetric가 모두 성립하는 관계 예외로는 전제조건이 성립하지 않을 때도 antisymmetric임.


• partial ordering
reflexive, antisymmetric, transitive가 성립하는 관계


• ordering
순서쌍 A|B(a,b)


• lexicographic order
사전식 주문 즉 사전적으로 일정하게 정렬되는 순서.
• transitive closure
집합R이 transitive가 성립하지 않지만 몇 개의 원소를 추가하면 transitive가
성립하게 되면. 이런 식으로 몇 개의 원소를 추가하여 transitive가 성립하는 것 중
가장 작은 집합을 transitive closure라고 합니다.


• composition
집합 A에서 B로의 관계를 A라고 하고, 집합 B에서 C로의 관계를 S라고 하자.
R과 S의 합성관계(composition relation)는 a∈b이고 c∈C일 때,       이고       인
b∈B가 존재하는 순서쌍(a,c)로 구성되는 관계이며, S∘R로 나타낸다.


• identity relation
=reflexive동일하다


• inverse relation
=symmetric과 동일


• function
함수


• image
상


• range
치역


• equal
등호(equal sign)「=」를 쓴다. 좌변과 우변이 같은 것을 표시한다.


• injective
단사함수. 함수의 치역이 공변역의 부분집합이 되며, 정의역에 있는 원소의 개수가
공변역에 있는 원소의 개수보다 작거나 같다.
• surjective
전사함수. 함수의 치역이 공변역과 같으며, 정의역에 있는 원소의 개수가 공변역에
있는 원소의 개수보다 크거나나 같다.


• bijection
전단사함수. 함수의 치역이 공변역과 같으며, 정의역에 있는 원소의 개수와
공변역에 있는 원소의 개수가 같다.


• permutation
서로 다른 n개에서 r개를 뽑아 일렬로 배열하는 방법. 그 방법은 nPr가지이다.
또한 주어진 집합에서 그 집합 자신으로 대응시키는 전단사(全單射) 함수를
말하기도 한다.


• The Pigeonhole Principle
비둘기 집의 원리 : n+1 마리의 비둘기가 n개의 비둘기집에 들어가려면 최소한 한
개의 비둘기집에는 두 마리 이상의 비둘기가 들어가야 한다는 원리.


• invertible
역행렬 : n차의 정방행렬 A에 대하여 AB=BA=I를 만족하는 행렬 B가 존재할 때,
B를 A의 역행렬 이라고 한다.
※ 과제(구조에 대한 설명은 주석처리)
//소스(제작환경 : DEV C++)
#include <stdio.h>


int Find_n(char arr[]);
int Find_m(char arr[]);
void Exch(char crr[],int *p);
void arr_prt(int *p ,int n,int m);
int reflexive(int *p,int n,int m);
int irreflexive(int *p,int n,int m);


int main(){
     //
         //---------------------------data input-----------------------
     char input_data[512];
     int i=0,n,m;
     scanf("%s",&input_data);
/*
     while(1){
           if(input_data[i] == '0')     break;
           printf("%c",input_data[i]);
           i++;
     }
*/


//       printf("n%d %dn",Find_n(input_data),Find_m(input_data));
     n=Find_n(input_data);
     m=Find_m(input_data);
     //------------------------------------------------------------
         //---------------------------create arr-----------------------
     int base_arr[n][m];
/*
     base_arr[0][0] = 11;base_arr[0][1] = 22;
     base_arr[1][0] = 33;base_arr[1][1] = 44;
*/
     int *ba_p;
     ba_p = &base_arr[0][0];
     //------------------------------------------------------------
     //------------------------------------------------------------
     //--------------------------exchange--------------------------
     Exch(input_data,ba_p);
//       arr_prt(ba_p,n,m);


     if(n==m)
           if(reflexive(ba_p,n,m)) printf("reflexive = yesn");
           else printf("reflexive = non");
     else printf("reflexive = non");
     if(n==m)
           if(irreflexive(ba_p,n,m)) printf("irreflexive = yesn");
else printf("irreflexive = non");
     else printf("irreflexive = non");


     int u,y,o,e=0;
         for(u=0; u<n; u++){
                    for(y=0; y<u; y++){
                             if(base_arr[u][y] != base_arr[y][u]){
                                       e = 1;
                                       break
                             }
                    }
         }
     if(e == 1) printf("Symmetric = non");
     else printf("Symmetric = yesn");




//       getch();
     return 0;
}
int reflexive(int *p,int n,int m){
     int i,temp=0,result = 0;
     for(i=0;i<m;i++){
             //printf("%d re %dn",*(p+temp),result);
             if(*(p+temp) != 1 ) result = 1;
             temp = temp + n + 1;
     }
     if(result == 1) return 0;
     else return 1;
}
int irreflexive(int *p,int n,int m){
     int i,temp=0,result = 0;
     for(i=0;i<m;i++){
             if(*(p+temp) != 0 ) result = 1;
             temp = temp + n + 1;
             //printf("%d re %dn",*(p+temp),result);
     }
     if(result == 1) return 0;
     else return 1;
}
//
//
//
void arr_prt(int *p ,int n,int m){
     int i=0,j=0;
     while(1){
             if(i == n*m)    break
             if(i%m == 0){
                 printf("n");
                 j++;
             }
             printf("%d ",*p++);
             i++;
     }
}
//
//

// 변환함수
void Exch(char crr[],int *p){
     int nct=0,i=0,n=0,m=0;
     while(1){
         if(crr[i] == '0')      break
         //if(arr[i] == '[')    continue;
         if(crr[i] == ',')     n++;
         if(crr[i] == ']')     m++;
         if(crr[i] == '1'){
             *p = 1;
             p++;
         }
         if(crr[i] == '0'){
             *p = 0;
             p++;
         }
         i++;
     }
}


//
//
//N x M array sagasuno
int Find_n(char arr[]){
     int nct=0,i=0;
     while(1){
         if(arr[i] == '0')      break
         //if(arr[i] == '[')    continue;
         if(arr[i] == ']')     nct++;
         i++;
     }
     return nct-1;
}
int Find_m(char arr[]){
     int nct=0,i=0;
     while(1){
         if(arr[i] == '0')      break
         //if(arr[i] == '[')    continue;
         if(arr[i] == ',')     nct++;
         if(arr[i] == ']')     break
         i++;
     }
     return nct+1;
}
※ 과제를 마치면서.




- 이번 프로젝트를 하면서 학습내용과 과제를 공부하면서

데이터베이스 시스템에 대하여 이항관계가 어떻게 사용되고

table, tuple과의 상관관계 relational을 이용한 Selection,

Projection, join 등을 만드는 법을 배웠고 과제 1을 통하여

관계(reflexive,   symmetric, transitive)에   대한 알고리즘과 C에 코딩할

때 어떻게 구성하여야 할지를 알 수 있었습니다.




                               감사합니다.

More Related Content

PDF
Data Structure - 1st Study
PDF
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
PPT
An introduction to recursion
PDF
이산치3보고서
PDF
Computational Complexity
PDF
8. Logistic Regression
PDF
Ruby Enumerator(루비 열거자) 이해하기
PDF
Mathematics
Data Structure - 1st Study
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
An introduction to recursion
이산치3보고서
Computational Complexity
8. Logistic Regression
Ruby Enumerator(루비 열거자) 이해하기
Mathematics

What's hot (18)

PDF
DP 알고리즘에 대해 알아보자.pdf
PDF
HI-ARC PS 101
PDF
2012 Dm A0 04 Pdf
PDF
2012 Ds 01
PDF
자료구조1보고서
PDF
2012 Ds D2 03 Pdf
PDF
이산치1번
PDF
자료구조 프로젝트
PDF
6장 표현식 및 문장
PDF
과제 1,2,3
PDF
How to Study Mathematics for ML
PDF
Haskell study 10
PDF
2012 Ds D2 03
PPT
String Searching Algorithms
PPTX
Startup JavaScript 4 - 객체
PDF
HI-ARC PS 102 Brute Force
PDF
Haskell study 9
PDF
Support Vector Machine Tutorial 한국어
DP 알고리즘에 대해 알아보자.pdf
HI-ARC PS 101
2012 Dm A0 04 Pdf
2012 Ds 01
자료구조1보고서
2012 Ds D2 03 Pdf
이산치1번
자료구조 프로젝트
6장 표현식 및 문장
과제 1,2,3
How to Study Mathematics for ML
Haskell study 10
2012 Ds D2 03
String Searching Algorithms
Startup JavaScript 4 - 객체
HI-ARC PS 102 Brute Force
Haskell study 9
Support Vector Machine Tutorial 한국어
Ad

Similar to 이산치2번 (20)

PDF
프로젝트 보고서
PDF
2012 Ds B1 01
PDF
2012 Ds A1 05
PDF
Project#3 How Fast Can We Sort Hwp
PDF
3콤비네이션
PDF
자료구조5보고서
PDF
이산수학02
PDF
Project#5 최단거리 찾기 D0 Hwp
PDF
이산수학 D1 프로젝트 2
DOCX
자료구조 Project1
PDF
DM_02
PPT
1.자료구조와 알고리즘(강의자료)
PDF
자구2번
PDF
알고리즘과 자료구조
PDF
2012 Dm 02
PDF
2012 Dm C3 03
PDF
2012 Ds B2 02
PDF
2012 Ds B2 02 Pdf
PDF
이산수학03
PDF
Spherical Harmonics.pdf
프로젝트 보고서
2012 Ds B1 01
2012 Ds A1 05
Project#3 How Fast Can We Sort Hwp
3콤비네이션
자료구조5보고서
이산수학02
Project#5 최단거리 찾기 D0 Hwp
이산수학 D1 프로젝트 2
자료구조 Project1
DM_02
1.자료구조와 알고리즘(강의자료)
자구2번
알고리즘과 자료구조
2012 Dm 02
2012 Dm C3 03
2012 Ds B2 02
2012 Ds B2 02 Pdf
이산수학03
Spherical Harmonics.pdf
Ad

More from kangseungwoo (7)

PDF
자구6번
PDF
자구5번
PDF
자구4번
PDF
자구3번
PDF
이산치5번
PDF
이산치4번
PDF
이산치3번
자구6번
자구5번
자구4번
자구3번
이산치5번
이산치4번
이산치3번

이산치2번

  • 1. 보고서 소속 : 자료구조 01분반 D0조 이름 : 20073547 홍진욱 , 20083430 강승우 , 20093447 김도형, 20093489 송하윤 ,20093516 장진승 , 20073457 김재찬 과제수행기간: 14 일 3번 모임 총 5시간 I. 계획의 작성 ①연구제목: 관계찾기 ②연구배경: Database Management System ③참고자료: : Discrete Mathematics and its applications II. 목차 1. 임무분담에 대하여 ( 2쪽 ) 2. 학습내용에 대하여 ( 3~5쪽 ) 3. 과제 1에 대한 소스 ( 6~8쪽 ) 4. 과제를 마치면서( 마지막 쪽 ) ※ 모임은 (3/19,3/21) 2번 가졌으며 토의 내용에 대하여 개인보고서 작성.
  • 2. ※ 임무 분담에 대하여 조장 : 김도형 보고서 작성, 최종 종합. 알고리즘 : 송하윤,김재찬 자연식의 계산 원리를 파악하여 프로그램에 대입하는 역할. 코딩 : 홍진욱 C 코딩 및 프로그램에 대하여 구조 개선 및 문제점 해결. 자료검토 및 스케줄 : 장진승 토론 계획 및 스케줄 관리 준비된 자료 재검토. 검색 및 토의종합 : 강승우 토의 한 내용 기록 및 문제 및 궁금점 조사.
  • 3. ※ 학습내용에 대하여 • binary relation 이항관계 • reflexive 관계 R이 정의된 집합의 모든 원소 a에 대해서 aRa가 성립하는 경우에 대해 R을 반사적 관계(reflexive)라고 한다. • symmetric 집합의 두 원소 a, b에 대해서 a R b 관계가 성립할 때 b R a의 관계도 성립하면 R을 대칭성 관계라 한다. • transitive 집합의 세 원소 a, b, c에 대해 a R b와 b R c 관계가 성립하면 a R c의 관계도 성립되는 것.(추이관계) • equivalence relations reflexive, symmetric, transitive를 모두 성립하는 관계 • equivalence class of x relative to R 집합R의 각각의 relative를 묶어 분할해 묶어놓은 class • irreflexive 관계 R이 정의된 집합의 모든 원소 a에 대해서 aRa가 0인 경우에 대해 R을 반사적 관계(reflexive)라고 한다. • antisymmetric R이 그 집합에 속하는 임의의 원소 a, b에 대하여 aRb이고, bRb이면 a=b일 때의 관계. reflexive와 symmetric가 모두 성립하는 관계 예외로는 전제조건이 성립하지 않을 때도 antisymmetric임. • partial ordering reflexive, antisymmetric, transitive가 성립하는 관계 • ordering 순서쌍 A|B(a,b) • lexicographic order 사전식 주문 즉 사전적으로 일정하게 정렬되는 순서.
  • 4. • transitive closure 집합R이 transitive가 성립하지 않지만 몇 개의 원소를 추가하면 transitive가 성립하게 되면. 이런 식으로 몇 개의 원소를 추가하여 transitive가 성립하는 것 중 가장 작은 집합을 transitive closure라고 합니다. • composition 집합 A에서 B로의 관계를 A라고 하고, 집합 B에서 C로의 관계를 S라고 하자. R과 S의 합성관계(composition relation)는 a∈b이고 c∈C일 때,   이고   인 b∈B가 존재하는 순서쌍(a,c)로 구성되는 관계이며, S∘R로 나타낸다. • identity relation =reflexive동일하다 • inverse relation =symmetric과 동일 • function 함수 • image 상 • range 치역 • equal 등호(equal sign)「=」를 쓴다. 좌변과 우변이 같은 것을 표시한다. • injective 단사함수. 함수의 치역이 공변역의 부분집합이 되며, 정의역에 있는 원소의 개수가 공변역에 있는 원소의 개수보다 작거나 같다.
  • 5. • surjective 전사함수. 함수의 치역이 공변역과 같으며, 정의역에 있는 원소의 개수가 공변역에 있는 원소의 개수보다 크거나나 같다. • bijection 전단사함수. 함수의 치역이 공변역과 같으며, 정의역에 있는 원소의 개수와 공변역에 있는 원소의 개수가 같다. • permutation 서로 다른 n개에서 r개를 뽑아 일렬로 배열하는 방법. 그 방법은 nPr가지이다. 또한 주어진 집합에서 그 집합 자신으로 대응시키는 전단사(全單射) 함수를 말하기도 한다. • The Pigeonhole Principle 비둘기 집의 원리 : n+1 마리의 비둘기가 n개의 비둘기집에 들어가려면 최소한 한 개의 비둘기집에는 두 마리 이상의 비둘기가 들어가야 한다는 원리. • invertible 역행렬 : n차의 정방행렬 A에 대하여 AB=BA=I를 만족하는 행렬 B가 존재할 때, B를 A의 역행렬 이라고 한다.
  • 6. ※ 과제(구조에 대한 설명은 주석처리) //소스(제작환경 : DEV C++) #include <stdio.h> int Find_n(char arr[]); int Find_m(char arr[]); void Exch(char crr[],int *p); void arr_prt(int *p ,int n,int m); int reflexive(int *p,int n,int m); int irreflexive(int *p,int n,int m); int main(){ // //---------------------------data input----------------------- char input_data[512]; int i=0,n,m; scanf("%s",&input_data); /* while(1){ if(input_data[i] == '0') break; printf("%c",input_data[i]); i++; } */ // printf("n%d %dn",Find_n(input_data),Find_m(input_data)); n=Find_n(input_data); m=Find_m(input_data); //------------------------------------------------------------ //---------------------------create arr----------------------- int base_arr[n][m]; /* base_arr[0][0] = 11;base_arr[0][1] = 22; base_arr[1][0] = 33;base_arr[1][1] = 44; */ int *ba_p; ba_p = &base_arr[0][0]; //------------------------------------------------------------ //------------------------------------------------------------ //--------------------------exchange-------------------------- Exch(input_data,ba_p); // arr_prt(ba_p,n,m); if(n==m) if(reflexive(ba_p,n,m)) printf("reflexive = yesn"); else printf("reflexive = non"); else printf("reflexive = non"); if(n==m) if(irreflexive(ba_p,n,m)) printf("irreflexive = yesn");
  • 7. else printf("irreflexive = non"); else printf("irreflexive = non"); int u,y,o,e=0; for(u=0; u<n; u++){ for(y=0; y<u; y++){ if(base_arr[u][y] != base_arr[y][u]){ e = 1; break } } } if(e == 1) printf("Symmetric = non"); else printf("Symmetric = yesn"); // getch(); return 0; } int reflexive(int *p,int n,int m){ int i,temp=0,result = 0; for(i=0;i<m;i++){ //printf("%d re %dn",*(p+temp),result); if(*(p+temp) != 1 ) result = 1; temp = temp + n + 1; } if(result == 1) return 0; else return 1; } int irreflexive(int *p,int n,int m){ int i,temp=0,result = 0; for(i=0;i<m;i++){ if(*(p+temp) != 0 ) result = 1; temp = temp + n + 1; //printf("%d re %dn",*(p+temp),result); } if(result == 1) return 0; else return 1; } // // // void arr_prt(int *p ,int n,int m){ int i=0,j=0; while(1){ if(i == n*m) break if(i%m == 0){ printf("n"); j++; } printf("%d ",*p++); i++; }
  • 8. } // // // 변환함수 void Exch(char crr[],int *p){ int nct=0,i=0,n=0,m=0; while(1){ if(crr[i] == '0') break //if(arr[i] == '[') continue; if(crr[i] == ',') n++; if(crr[i] == ']') m++; if(crr[i] == '1'){ *p = 1; p++; } if(crr[i] == '0'){ *p = 0; p++; } i++; } } // // //N x M array sagasuno int Find_n(char arr[]){ int nct=0,i=0; while(1){ if(arr[i] == '0') break //if(arr[i] == '[') continue; if(arr[i] == ']') nct++; i++; } return nct-1; } int Find_m(char arr[]){ int nct=0,i=0; while(1){ if(arr[i] == '0') break //if(arr[i] == '[') continue; if(arr[i] == ',') nct++; if(arr[i] == ']') break i++; } return nct+1; }
  • 9. ※ 과제를 마치면서. - 이번 프로젝트를 하면서 학습내용과 과제를 공부하면서 데이터베이스 시스템에 대하여 이항관계가 어떻게 사용되고 table, tuple과의 상관관계 relational을 이용한 Selection, Projection, join 등을 만드는 법을 배웠고 과제 1을 통하여 관계(reflexive, symmetric, transitive)에 대한 알고리즘과 C에 코딩할 때 어떻게 구성하여야 할지를 알 수 있었습니다. 감사합니다.