A2조 이산치수학
프로젝트 보고서
 Syntax of
 languages




        조장 : 20113295 성주희
        조원 : 20093463 김창헌
            20043695 이성욱
            20093451 김성현
            20093440 고정현
과제수행일지
  소속                   조장 : 성주희                       조원 : 김창헌, 이성욱, 김성현, 고정현


                 자료조사 :                      프로그래밍 :             보고서 작성 :
  A2
                김창헌, 고정현                    김성현, 이성욱               성주희


과제수행기간                                        7일 8시간

                                  I. 계획의 작성

 연구제목    Directed graph




 연구배경     그래프에 대해서 학습하고 응용법에 대해서 연구 활용한다.




         Ⅰ )   http://blog.naver.com/kimth1023/120072188872
 참고자료    Ⅱ )   http://http://alpak3737.blog.me/140108435964




                                 II. 계획의 실행

 첫째 날                                 2012년 5월 15일 화요일

오늘의 작업               조원의 업무 분담과 학습할 내용 및 과제에 대한 이해와 숙지


         조장 : 성주희
         자료조사 : 김창헌, 고정현
         프로그래밍 : 이성욱, 김성현
토의 내용

         이처럼 각자 역할 분담을 하였다. 그리고 각자 시간이 나는대로 소스를 생각해 보기로
         하였다.


과제준비에서
이번주 코딩은 좀 무난히 할수 있을 것 같았다. 자료조사만 완벽하게 된다면 코딩은 할
 느낀 점    수 있을거 같다.


 둘째 날                              2012년 5월 19일 토요일
오늘의 작업                         각자 조사해온 내용에 대한 토의
         directed graph




         antecedent

         선행사건


         indegree(진입 차수)
토의 내용
         방향성 그래프에서 정점의 indegree는 이 정점으로 들어오는 간선의 수


         outdegree(진출 차수)

         방향성 그래프에서 정점의 outdegree는 이 정점에서 나가는 간선의 수


         source

         데이터를 송신하는 곳


         sink


         데이터를 수신받는 곳


         adjacency matrix(인접 행렬)

         정점 집합 V(G)={ V1, V2… Vn}인 그래프 G=(V(G),E(G))의 인접 행렬(adjacency

         matrix)은 그래프를 구성하는 각 정점들 간의 인접 여부를 n×n의 2차원 배열로 표현한

         것이다. 2차원 배열 A(i, j)에서 연결선 (Vi, Vj)가 E(G)에 속하면 A(i, j)=1이 되고, E(G)에
속하지 않으면 A(i, j)=0 이 된다.




reachability matrix




weight of a path


가중그래프, 가중 그래프는 노드를 연결하는 간선에 가중치가
할당된 그래프를 말한다. 즉, 노드와 노드를 연결하는 간선에
가중치 속성이 있을 때 이를 가중치 그래프라 한다. 이때 간선
사이의 비용(Cost) 혹은 거리(Distance) 등 다양한 속성으로 사용될
수 있다.

shortest path

그래프의 두 정점 간의 경로 중에서 길이가 가장 짧은 경로.
과제준비에서    이번 회의를 통해서, 각자 의견을 내서 가장 타당한 의견을 냈다. 자료 찾는게 약간 힘
 느낀 점     든 부분이었지만 코딩은 쉽게 할 수 있었다.



                                            III. 결과
          #include<stdio.h>


          int main()
          {
                  int num,cnt=1,chcnt=0,i,count=0,j,chtemp,temp;
                  char ch;
                  char chr[200];
                  int arr[2][100];

최종 프로그램
  소스
                  for(i=0;i<100;i++)//배열 초기화
                  {
                             arr[0][i]=0;
                             arr[1][i]=0;
                  }


                  scanf("%d" , &num);
                  fflush(stdin);
for(;;)
     {
               ch=getchar();
               if(ch == 'n') break;


               if(ch >=65 && ch <=90 || ch >= 97 && ch <= 122)
               {
               for(i=0;i<chcnt;i++)
               {
                        if(chr[i] == ch)// 문자확인 새로운 노드가 아닐경우
                        {
                                 count++;
                                 if(cnt%2 == 0)
                                 {
                                          arr[0][i]+=1;
                                 }
                                 else arr[1][i]+=1;
                                 cnt++;


                                 break;
                        }
               }
               }



                        if(count==0)
                        {
                                 if(ch >=65 && ch <=90 || ch >= 97 && ch <=
122)//새로운 노드일경우
                                 {
                                          chr[chcnt]=ch;


                                          if(cnt%2==0)
                                          {
                                                      arr[0][chcnt]+=1;
                                          }
                                          else arr[1][chcnt]+=1;
                                          chcnt++;
                                          cnt++;
                                 }
}
                      count=0;



    }
            for(i=0;i<chcnt-1;i++) // 출력을 위해 오름차순으로 다시정렬
    {
            for(j=i+1;j<chcnt;j++)
            {
                      if(chr[i] > chr[j])
                      {
                                 chtemp=chr[i];
                                 chr[i]=chr[j];
                                 chr[j]=chtemp;
                                 temp=arr[0][i];
                                 arr[0][i]=arr[0][j];
                                 arr[0][j]=temp;
                                 temp=arr[1][i];
                                 arr[1][i]=arr[1][j];
                                 arr[1][j]=temp;
                      }
            }
    }



    for(i=0;i<chcnt;i++)
    {
            printf("%c %d %d " , chr[i] , arr[0][i] , arr[1][i]);
            if(arr[0][i] == 0) printf("sourcen");
            else if(arr[1][i] ==0) printf("sinkn");
            else printf("n");
    }


}
결과 출력




                          Ⅳ. 반성




           자료를 찾는 부분에서 시간이 많이 소요된거 같다. 이 부분을 서로서로 가르쳐 주는 부
           분에서 시간이 좀 걸렸다. 코딩은 좀 무난하게 하였는데, 서로 자주 만나 회의를 못해
과제를 마치면서
           온라인으로 만나서 회의를 해서 보고서의 질을 보다 높이지 못해서 좀 아쉬움이 남았습
  느낀 점
           니다.
조원평가   기여도(10점 만점)

김성현    8

김창헌    8

이성욱    10

성주희    8

고정현    0

이산치5보고서

  • 1.
    A2조 이산치수학 프로젝트 보고서 Syntax of languages 조장 : 20113295 성주희 조원 : 20093463 김창헌 20043695 이성욱 20093451 김성현 20093440 고정현
  • 2.
    과제수행일지 소속 조장 : 성주희 조원 : 김창헌, 이성욱, 김성현, 고정현 자료조사 : 프로그래밍 : 보고서 작성 : A2 김창헌, 고정현 김성현, 이성욱 성주희 과제수행기간 7일 8시간 I. 계획의 작성 연구제목 Directed graph 연구배경 그래프에 대해서 학습하고 응용법에 대해서 연구 활용한다. Ⅰ ) http://blog.naver.com/kimth1023/120072188872 참고자료 Ⅱ ) http://http://alpak3737.blog.me/140108435964 II. 계획의 실행 첫째 날 2012년 5월 15일 화요일 오늘의 작업 조원의 업무 분담과 학습할 내용 및 과제에 대한 이해와 숙지 조장 : 성주희 자료조사 : 김창헌, 고정현 프로그래밍 : 이성욱, 김성현 토의 내용 이처럼 각자 역할 분담을 하였다. 그리고 각자 시간이 나는대로 소스를 생각해 보기로 하였다. 과제준비에서
  • 3.
    이번주 코딩은 좀무난히 할수 있을 것 같았다. 자료조사만 완벽하게 된다면 코딩은 할 느낀 점 수 있을거 같다. 둘째 날 2012년 5월 19일 토요일 오늘의 작업 각자 조사해온 내용에 대한 토의 directed graph antecedent 선행사건 indegree(진입 차수) 토의 내용 방향성 그래프에서 정점의 indegree는 이 정점으로 들어오는 간선의 수 outdegree(진출 차수) 방향성 그래프에서 정점의 outdegree는 이 정점에서 나가는 간선의 수 source 데이터를 송신하는 곳 sink 데이터를 수신받는 곳 adjacency matrix(인접 행렬) 정점 집합 V(G)={ V1, V2… Vn}인 그래프 G=(V(G),E(G))의 인접 행렬(adjacency matrix)은 그래프를 구성하는 각 정점들 간의 인접 여부를 n×n의 2차원 배열로 표현한 것이다. 2차원 배열 A(i, j)에서 연결선 (Vi, Vj)가 E(G)에 속하면 A(i, j)=1이 되고, E(G)에
  • 4.
    속하지 않으면 A(i,j)=0 이 된다. reachability matrix weight of a path 가중그래프, 가중 그래프는 노드를 연결하는 간선에 가중치가 할당된 그래프를 말한다. 즉, 노드와 노드를 연결하는 간선에 가중치 속성이 있을 때 이를 가중치 그래프라 한다. 이때 간선 사이의 비용(Cost) 혹은 거리(Distance) 등 다양한 속성으로 사용될 수 있다. shortest path 그래프의 두 정점 간의 경로 중에서 길이가 가장 짧은 경로.
  • 5.
    과제준비에서 이번 회의를 통해서, 각자 의견을 내서 가장 타당한 의견을 냈다. 자료 찾는게 약간 힘 느낀 점 든 부분이었지만 코딩은 쉽게 할 수 있었다. III. 결과 #include<stdio.h> int main() { int num,cnt=1,chcnt=0,i,count=0,j,chtemp,temp; char ch; char chr[200]; int arr[2][100]; 최종 프로그램 소스 for(i=0;i<100;i++)//배열 초기화 { arr[0][i]=0; arr[1][i]=0; } scanf("%d" , &num); fflush(stdin);
  • 6.
    for(;;) { ch=getchar(); if(ch == 'n') break; if(ch >=65 && ch <=90 || ch >= 97 && ch <= 122) { for(i=0;i<chcnt;i++) { if(chr[i] == ch)// 문자확인 새로운 노드가 아닐경우 { count++; if(cnt%2 == 0) { arr[0][i]+=1; } else arr[1][i]+=1; cnt++; break; } } } if(count==0) { if(ch >=65 && ch <=90 || ch >= 97 && ch <= 122)//새로운 노드일경우 { chr[chcnt]=ch; if(cnt%2==0) { arr[0][chcnt]+=1; } else arr[1][chcnt]+=1; chcnt++; cnt++; }
  • 7.
    } count=0; } for(i=0;i<chcnt-1;i++) // 출력을 위해 오름차순으로 다시정렬 { for(j=i+1;j<chcnt;j++) { if(chr[i] > chr[j]) { chtemp=chr[i]; chr[i]=chr[j]; chr[j]=chtemp; temp=arr[0][i]; arr[0][i]=arr[0][j]; arr[0][j]=temp; temp=arr[1][i]; arr[1][i]=arr[1][j]; arr[1][j]=temp; } } } for(i=0;i<chcnt;i++) { printf("%c %d %d " , chr[i] , arr[0][i] , arr[1][i]); if(arr[0][i] == 0) printf("sourcen"); else if(arr[1][i] ==0) printf("sinkn"); else printf("n"); } }
  • 8.
    결과 출력 Ⅳ. 반성 자료를 찾는 부분에서 시간이 많이 소요된거 같다. 이 부분을 서로서로 가르쳐 주는 부 분에서 시간이 좀 걸렸다. 코딩은 좀 무난하게 하였는데, 서로 자주 만나 회의를 못해 과제를 마치면서 온라인으로 만나서 회의를 해서 보고서의 질을 보다 높이지 못해서 좀 아쉬움이 남았습 느낀 점 니다.
  • 9.
    조원평가 기여도(10점 만점) 김성현 8 김창헌 8 이성욱 10 성주희 8 고정현 0