반응형

수업 시간에 Dynamic Progrmaming 실습으로 편집거리테이블 (string edit table) 에 대해 배웠다.

 

편집거리는 두 문자열의 차이를 측정하기 위한 문자열 측정 단위 이다.

 

최소 편집거리는 주어진 문자열을 목표 문자열로 변환하기 위해 필요한 최소한의 편집 거리 이다.


X = bbabb -> Y = abaa (X : 주어진 문자열 , Y : 목표 문자열 ) 

 

- 삽입 (1), 삭제 (1), 변경(0 or 2)

 

1) 편집 1 -> x 전부 삭제, y 하나씩 삽입 (비용 : 9)

 

2) 편집 2 -> x1, x2 를 삭제하고 x5를 a로 변경한 뒤 a 삽입 (비용 : 6)

 

    a b a a
  0 1 2 3 4
b 1 2 1 2 3
b 2 3 2 3 4
a 3 2 3 2 3
b 4 3 2 3 4
b 5 4 3 4 5

<편집 거리 테이블>

 

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int DP(string A, string B)
{
    int aLen = A.size();
    int bLen = B.size();
    int** E;
    char* aChar, * bChar;
    aChar = (char*)A.c_str();
    bChar = (char*)B.c_str();
    E = new int* [aLen + 1];
    for (int i = 0; i <= aLen; i++)
    {
        E[i] = new int[bLen + 1];
    }
    for (int i = 0; i <= aLen; i++)
    {
        E[i][0] = i;
    }
    for (int i = 0; i <= bLen; i++)
    {
        E[0][i] = i;
    }
    for (int i = 1; i <= aLen; i++)
    {
        for (int j = 1; j <= bLen; j++)
        {
            if (aChar[i - 1] == bChar[j - 1])
                E[i][j] = min(E[i - 1][j] + 1, min(E[i][j - 1] + 1, E[i - 1][j - 1]));
            else
                E[i][j] = min(E[i - 1][j] + 1, min(E[i][j - 1] + 1, E[i - 1][j - 1] + 2));
        }
    }
    for (int i = 0;i <= aLen;i++) {
        for (int j = 0;j <= bLen;j++) {
            printf("%d\t", E[i][j]);

        }
        printf("\n");

    }
    printf("-----------------------------------\n");
    return E[aLen][bLen];
}
int main(void)
{
    string A, B;
    getline(cin, A);
    getline(cin, B);
    printf("편집거리테이블\n");
    cout << "최소편집 비용 : " << DP(A, B);
}


 알고리즘 설명

 

E[i][j] = min(E[i-1][j],min(E[i][j-1],E[i-1][j-1] + 2))

 

    a b
  0:E[0][0] 1:E[0][1] 2
b 1:E[1][0] E[1][1]  
b 2    

 

E[1][1] 을 구하기 위해서는 주변의 세 가지 요소의 값 중 최솟값을 구한 후, 삽입, 제거, 교환 연산에 의한 비용을 더해주

 

면된다.

 

E[0][0], E[1][0], E[0][1] 중 최솟값은 E[0][0] = 0 이다.

 

그리과,  0 행과 0 열의 숫자가 다르므로 비용은 2 증가 따라서, E[1][1] = 2이다. 

 

이런식으로 모든 행렬의 값을 구하면 E[모든행의개수][모든열의개수] 의 값은 최소 편집거리가 된다. 

 

이때, 목표 문자열과 현재 문자열을 바꾸어 계산해도 값은 같으며, 

 

연산들의 값을 각 각 다르게 주고 문자열들을 바꾸어 계산해도 값은 같다.

 

왜냐하면, 결국 최솟값의 합연산 결과들이므로 마지막 최소편집거리는 같다. 

반응형
반응형

Malware

  • Virus : 자기증식
  • Worm : 자기증식, 스스로 activate
  • Spyware malware
    • keystrock
    • Private 정보 위부유출
반응형

'Lecture > Computer Network' 카테고리의 다른 글

[1.5] Protocol Layer  (0) 2021.04.25
[1.4] Delay  (0) 2021.04.25
[1.3] The Network Core  (0) 2021.04.25
[1.2] The Network Edge  (0) 2021.04.25
[1.1] What is the Internet  (0) 2021.04.25
반응형

1.5.1 Layered Architecture

Layer

  • 각각의 레이어는 하나의 서비스 제공

왜 레이어 일까?

  • 디자인
    • 복잡한 구조를 명확히 해준다.
  • Maintenance, updating
    • 레이어 서비스 변화와 무관하게 사용
    • 예 ) 비행기 gate 절차변경이 다른 요소에 영향을 주지 않음

💥단점

  • Function call ⬆ → memory call ⬆ → 성능 ⬇
  • 보기가 좋아진다 → 성능 ⬇

Internet Protocol Layer

  • Application
    • 네트워크 앱을 서포팅
    • FTP, SMTP, HTTP
  • Transport
    • 프로세스 간의 데이터 transfer
    • TCP, UDP
  • Network
    • 소스에서 도착지까지 Datagram을 라우팅
    • 길찾기
    • IP, Routing Protocol
  • Link
    • Neighboring Network Elements 사이에서 데이터 송수신
    • Ethernet, WIFi, PPP
  • Physical
    • Bits "on the wire"

ISO / OSI reference model ( 요소를 추가한 모델 )

  • Presentation
    • 어플리케이션을 통역
  • Session
    • Synchronization
    • CheckPointing
    • Recovery of data exchange
  • 위의 두 레이어는 필요시에만 구현
  • Encapsulation
    • 헤더를 붙여주는 과정정
     

반응형

'Lecture > Computer Network' 카테고리의 다른 글

[1.6] Networks Under Attack  (0) 2021.04.25
[1.4] Delay  (0) 2021.04.25
[1.3] The Network Core  (0) 2021.04.25
[1.2] The Network Edge  (0) 2021.04.25
[1.1] What is the Internet  (0) 2021.04.25
반응형

1.4.1 Delay

  • Packet-Delay
    • 도착 속도 > skrksms threh
  • D-nodal = d-proc + d-queue + d-trans + d-prop
  1. D-nodal
    • Error 확인
    • Output link 결정
  2. D-queue
    • Transmission 을 위해 output link 에서 기다리는 시간
    • 라우터의 congestion level 에 의존
  3. D-trans
    • L : packet length
    • R : Link bandwidth
    • D-trans = $L/R$
  4. D-prop
    • D : length of physical link
    • S : propagation speed
    • D-prop = $D/S$

✋Carvan Analogy

  • 10대의 차가 있다.
  • Propagation late : 100km/h
  • Physical link length : 100km

Q. 카라반이 두번째 톨부스 전에 줄을 지을 수 있는 시간은 얼마일까?

첫번째 톨부스에서 나오는 시간은 12초이고 총 10대이므로 2분이 걸린다

  • D-prop = 100/100 = 1시간이다.
  • 총 62분
  • Propagation Speed 를 1000 이라고 하자

Q. 자동차들은 나머지 자동차들이 첫번째 톨부스에서 떠나기 전에 두번째 톨부스에 도착할까?

맞다. 첫번째 자동차가 7분에 걸려 도착했을 때 나머지 3대의 자동차는 아직 첫번째 부스에 있다.

1.4.2 Queueing Delay and Packet Loss

  • Queueing Delay
    • R : link bandwidth
    • L : Packet length
    • A : Average packet arrival rates
     
  • Packet loss
    • 버퍼에는 유한의 수용량을 가지고 있다.
    • 꽉 찬 버퍼에 패킷이 오면 (Lose)
    • Lost Packet 은 retransmit 된다.

1.4.4 Throughput

Throughput

  • 수송신자끼리의 바뀌어지는 bit 의 속도
  • Instantaneous (주어진 시간)
  • Average (임의의 기간 평균)
  • Rs, Rc 에 따라 Throughput 제한
  • Rs < Rc (bottleneck link : Rs)
  • Rs > Rc (bottleneck link : Rc)
  • Throughput : min(Rs, Rc) = bottleneck link
반응형

'Lecture > Computer Network' 카테고리의 다른 글

[1.6] Networks Under Attack  (0) 2021.04.25
[1.5] Protocol Layer  (0) 2021.04.25
[1.3] The Network Core  (0) 2021.04.25
[1.2] The Network Edge  (0) 2021.04.25
[1.1] What is the Internet  (0) 2021.04.25

+ Recent posts