데이터 구조 15 ( graph AOE , Sorting )

2023. 5. 21. 21:50·2학년 1학기/데이터 구조 ( Data structure )
728x90
반응형

AOE Network

 

Active On Edge

  • Edge가 Ativity를 의미
  • Weighted(=cost) edge
  • Vertex = 작업이 완료된 상황

 

분석 )

 

 Critical Path

 = The Longest Path - cost가 가장 큰 path

여기에서 crtical path를 보면

a3 -> a6 -> a8 -> a10 

6 + 7 + 7 + 4 = 21 이다.

 

전체 성능에 영향을 준다는 이유는, 군대 밥먹는 거라고 생각하면 됨. 

마지막 사람이 올 때까지는 출발 못 하듯

8상태가 되기 위해서는 a10와 a11을 지나야 함.

 

 


 

 Earliest start time

 = 해당 Activity 가 시작되려면 필요한 시간

=  마지막 주자까지 와야 그게 기록 종료임. 빨리 오는 애들은 영향없음. 

or a8 도로를 거치기 전에 애들 다 픽업해서 출발하는데, 출발하려면 얼마 걸리는지 생각.

  • a7을 보자.
    a7 을 시작하기 위해서는 a1과 a4만 지나면 되고, 그에 대한 cost는 5+3 = 8이다.

 

  • a8을 생각해보면 vertex 5 의 상태로 되기 위해선
    a2 a5를 거쳐서 다 했다해도 a3 a6이 안 되어있으니 vertex 5 earliest임.


  • a11을 생각해보자
    a11을 거치는 방법은 vertex 7을 거쳐서 오는 것 밖에 없다.
    vertex 7 을 거치는 법은 a9밖에 없고. 그러려면 vertex 5를 지나야하는데
    a8=a9 이므로 13+4(a9) 이므로 17

 

 

일 처리한다고 생각하면

[ 빠르면 2와 3한테서 자료를 받았을 때 시작가능! ] 

 + ( 둘 중에 하나라도 못 받으면 늦게 준 애가 줬을 때 시작 가능 )   

" 빠르면 (   ) 뒤에 시작 가능 "

 


 

 

Latest start time

= 해당 activity가 시작되어야 하는 가장 늦은 시간

= 해당 edge를 거쳐서 만나는 곳에 오는 애 중에 가장 늦게 오는 애랑 맞춰서 도착한다고 생각

 

a7을 거쳐서 만나는 곳에 가장 늦게 오는 애랑 동시에 만날 계획이라고 생각하면 됨

 

a11만 생각해보자.

a11을 거쳐서 8에 도달하는데, 거기에서 만나러 오는 애 중에 가장 늦게 오는 애는 24 가 걸린다.

그럼 24 뒤에 도착하니까 난 5시간 걸리는 거 감안하면 19에 출발하면 됨

 

weight 가 지하철타고 걸리는 시간이라고 생각하면 편함

" 늦어도 (    ) 뒤에는 시작해야함. " 

 

 


 

Sorting (오름차순만)

 

목적 :

1) Search

2) list끼리 비교 검증하기 위해

 

 

 

1. Search 알고리즘

 

int search(element a[] , int k , int n){

int j = 0 

while( ( j < n ) && (a[j].key != k ){

j++;

}

if(j<= n ) {

return -1;

}

return j;  

 

분석 : J<n 이 조건이 false로 반복문을 나오게 되면 if 문으로 들어가서 -1리턴

key값이 일치해서 나오면 그 인덱스 리턴

 

 

2. Binary Search 알고리즘

 

int binary_search(element a[ ], int k, int left, int right){

int middle ; 

while( left <= right ) {

middle = (left+right)/2 ;

if(a[middle].key ==k){

return middle;

}

if (a[middle].key > k)

right = middle -1;

if (a[middle].key < k)

left = middle +1;

}

return -1;

}

 

원리 : 책 100페이지가 있다. << 검색 범위를 반씩 줄일거임

내가 찾아야 하는 게 21 페이지임

첫 기준 : 왼1  중50  오100  ==> key값(21)이 middle 값보다 작음

다음 기준 : 왼1 중25  오49   ==> key값(21)이 middle 값보다 작음

다음 기준 : 왼1 중12  오 24   == > key값 (21)이 middle 값보다 큼

다음 기준 : 왼13 중18 오 24  ==> key값 (21) 이 ""

다음 기준 : 왼19 중21 오 24  ==> key값 (21) 이랑 일치 --> 바로 리턴

 

O(log n)

 

 

 


 

 

List Validation

 

위 리스트( sorting x) 
a에 있는 15 에 대해 b리스트에서 전체 한 번을 돌아야함

=  a에 있는 하나의 원소에 대해 b리스트 전체 원소를 돌아봐야한다.



아래는  작은 쪽부터 검색

a 1번째 -> b 1번째 비교

그렇게 하다가 한 쪽의 값이 더 작다?
걔가 새로 들어온 애일 수도 있으니   
작은 애가 있는 리스트에서만 인덱스를 한 칸 뒤로 가서 다시 비교 .

 

 


Insertion Sort

 

아래를 반복

1) 현위치보다 앞쪽에 있는 원소들 중 자신보다 큰 값을 자신의 뒤로 보냄

2) 더 이상 앞에 큰 값이 없거나 맨 앞 위치에 도달하면 그 곳에 원소를 넣는다.

 

숫자 = 인덱스 / 노란색에 있는 원소는 정렬했다는 의미임

 

이런 식으로 조금씩 정렬해나간다.

비교대상은 노란색 안에 있는 애들 :  노란색 바로 옆에 있는 애

 






앞 뒤 애를 큰 놈 작은 놈을 바꿈

--> 각 사이클마다 제일 큰 값이 제일 뒤로 감


반응형

'2학년 1학기 > 데이터 구조 ( Data structure )' 카테고리의 다른 글

데이터 구조 16 ( Selection , Quick , Heap , Merge sort)  (0) 2023.05.26
데구  (0) 2023.05.25
데이터 구조 14  (1) 2023.05.15
데이터 구조 13  (0) 2023.05.08
데이터 구조 12 (힙 추가 연산 , Binary Search Tree)  (0) 2023.05.01
'2학년 1학기/데이터 구조 ( Data structure )' 카테고리의 다른 글
  • 데이터 구조 16 ( Selection , Quick , Heap , Merge sort)
  • 데구
  • 데이터 구조 14
  • 데이터 구조 13
쫑알bot
쫑알bot
주로 복습 / Translator
  • 쫑알bot
    오래 못 할 짓 하지 않기
    쫑알bot
  • 전체
    오늘
    어제
    • 전체 (804)
      • 취약점 분석 (3)
        • AI 다루기 (8)
        • 분석 (1) N
      • 보안 및 모의해킹 (143)
        • CTF (Capture The Flag) (91)
        • 사례_솔루션 (7)
        • 개발자라면 (4)
        • 정보보안기사 (8)
        • 악성코드 분석 (29)
      • Security Tool Making (29)
        • Exploit 자동화 ( Automated Exp.. (14)
        • NLP based Deobfuscator (15)
      • 4학년 (144)
        • 알고리즘 문제풀이 (81)
        • 캡스톤 (Capstone) (14)
        • 데이터 과학 ( Data Science ) (18)
        • IoT 실습 (15)
        • Computer Vision (15)
        • 공학윤리 (1)
      • 사진 (14)
        • [1] 빈티지 카메라 (14)
      • 3학년 2학기 (85)
        • 네트워크 (Network) (49)
        • 컴퓨터 보안(Computer Security) (21)
        • 암호학(Cryptography) (6)
        • [ 학회 ] 금융ㆍ경제 (9)
      • 공부 외 (77)
        • 기록 (18)
        • 영화 (16)
        • 조향사 (9)
        • 책 (34)
      • 3학년 1학기 (106)
        • 운영체제 (OS) (48)
        • 데이터베이스(DB) (30)
        • 알고리즘 (Algorithm) (28)
      • 프로젝트 (0)
        • 멋쟁이 사자처럼 (0)
      • 웹 보안 (5)
        • 웹 개발자가 알아야하는 보안 기초 (4)
      • 2학년 2학기 (95)
        • 컴퓨터 구조 (49)
        • 웹서비스 제작 (11)
        • 기독교 변증학 (15)
        • 이산수학 (20)
      • 2학년 1학기 (67)
        • 데이터 구조 ( Data structure ) (22)
        • 논리 설계 ( Logic design ) (26)
        • 오픈소스 소프트웨어 ( OSS ) (12)
        • JAVA (7)
      • 혼자하기 (21)
        • 웹 프로젝트 1) 뉴스 (5)
        • React (4)
        • 연습 1) OAuth (12)
      • 별 용도없음 (0)
        • 과제 중간단계 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LangChain
    악성코드분석
    악성코드
    백준
    후킹
    윈도우
    스택
    뉴스요약
    AI
    코딩테스트
    디버기
    파이썬
    오블완
    보안
    PE_File
    LLM
    DLL
    분석
    모델튜닝
    MCP
    리버싱
    티스토리챌린지
    ollama
    보안분석
    DP
    다이나믹프로그래밍
    어셈블리어
    알고리즘
    해킹
    Claude
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
쫑알bot
데이터 구조 15 ( graph AOE , Sorting )
상단으로

티스토리툴바