본문 바로가기

it, 컴퓨터 ,

알고리즘,[ algorithm ]

728x90

알고리즘,[ algorithm ]

어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합.

알고리즘(algorithm)은 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것입니다. 넓게는 사람 손으로 해결하는 것, 컴퓨터로 해결하는 것, 수학적인 것, 비수학적인 것을 모두 포함한답니다.

예.
00가 이렇게 물었습니다. "이번주 학원 숙제 다 했어?" 이에 00는 "응. 다 했어."라고 대답합니다. 명희가 한 문장으로 간단하게 물어봤지만 영희는 그 말속에 '수학 문제 풀어오기, 국어 글짓기, 영어 단어 외워오기'가 포함되어 있음을 알고 있습니다. 이처럼 사람은 그 말속에 포함되어 있는 의미까지 이해할 수 있습니다. 하지만 컴퓨터는 그렇지 못합니다. 정확하게 무엇을 해야 할지 처리 내용과, 처리 순서를 모두 구체적으로 알려 주어야만 제대로 명령을 수행합니다. 그렇기 때문에 프로그램에 알고리즘이 필요한 것입니다.

알고리즘( algorithm )은 주어진 문제를 논리적으로 해결,

이 명령을 수행한 다음에는 무슨 일을 처리하고, 그 다음에는 어떤 파일들을 모아서 어떻게 처리해야 할지, 구체적으로 명령의 내용과 순서, 처리 방법을 모아놓은 것이죠. 알고리즘은 어떻게 구성하는가에 따라 같은 문제를 풀더라도 오래 걸릴 수도 있고, 오류가 생길 수도 있으므로 효율적이고, 명확하게 만드는 것이 중요합니다.

프로그램을 만드는 전체 과정에서 볼 때, 알고리즘을 짜는 것은 [계획]단계라고 할 수 있습니다. 프로그램이 어떻게 행동할지를 결정해 주는 이 계획이 완성되면(알고리즘 계획) 그것을 프로그램 언어로 작성하여 소프트웨어를 완성하는 것이죠.

알고리즘의 표현 방법, 출처: 컴퓨터인터넷IT용어대사전 (촬영: )

 

알고리즘(algorithm)이란?

용어는 수학자이자 바그다드 왕립 의회 의원이었던 Mohammed Al Khwarizmi의 이름에서 유래된 것으로, 문제를 해결하기 위해 구성된 일련의 순서화된 절차로, 다음의 조건을 만족해야 한다.

• 0개 이상의 입력과 1개 이상의 출력이 있어야 한다.
• 종료되어야 한다.
• 모든 명령이 실행 가능해야 한다.

하나의 문제를 해결하는 알고리즘은 여러 개가 있을 수 있지만, 그 중에서 가장 적합한 알고리즘을 찾는 것이 중요하다.

알고리즘의 종류는 매우 다양하고 분류하는 기준도 다양한데, 이 책에서는 다음과 같은 기초적인 알고리즘에 대해 살펴본다.

 정렬 알고리즘
 탐색 알고리즘
 재귀 알고리즘

 

알고리즘은 프로그래밍 언어를 사용해 하나의 작업을 수행하는 방법에 대한 서술로, 논리 요소와 통제 요소로 구성된다. 일반적으로 알고리즘 문화는 알고리즘적 사고방식이 지배하는 문화라 할 수 있다. 알고리즘 문화는 크게 두 가지 차원에서 접근할 수 있는데, 그 하나는 소프트웨어 문화의 관점이고, 다른 하나는 지식 담론의 관점이다.

 

개념과 속성,

알고리즘을 논리 요소(logic component)와 통제 요소(control component)로 분류한 로버트 코왈스키(Robert Kowalski, 1941~)

알고리즘(algorithm)은 프로그래밍 언어를 사용해 하나의 작업을 수행하는 방법에 대한 서술로, 프로그래밍 언어와 독립적일 뿐만 아니라 알고리즘이 구현된 프로그램을 실행하는 기계와도 독립된 추상적 실체(abstraction)다(Goffey, 2008).

로버트 코왈스키(Robert Kowalski, 1979)에 따르면, 알고리즘은 두 가지 요소로 구성되는데, 하나는 논리 요소(logic component)로서 문제를 해결하기 위해 사용되는 지식(knowledge)이고, 다른 하나는 통제 요소(control component)로서 그런 지식을 사용하기 위한 문제해결 전략(problem-solving strategies)이다. 즉 알고리즘은 아래와 같이 간명하게 표현할 수 있다.

알고리즘 = 논리 + 통제

여기서 논리 요소가 알고리즘의 의미를 결정한다면, 통제 요소는 알고리즘의 효율성에만 영향을 준다. 즉 알고리즘의 논리 요소는 바꾸지 않고 통제 요소만을 개선함으로써 알고리즘의 효율성을 개선할 수 있다.

논리 요소와 통제 요소로 구성되는 알고리즘은 다시 여섯 가지 하위 요소들로 구분된다. 코왈스키(1979)는 논리 요소를 ① 절차에 대한 추상적 정의 ② 데이터 구조에 대한 정의로, 그리고 통제 요소는 ① 방향(예를 들어, 상향식 또는 하향식) ② 절차의 실행 전략(예를 들어, 순차적 또는 동시적) ③ 대안적 절차에 대한 모색 전략 ④ 관계적으로 표현된 데이터의 저장 체계로 구분한다. 코왈스키는 프로그래밍 텍스트에서 이와 같은 알고리즘의 세부 요소들을 구별해 냄으로써 컴퓨터 프로그램에 대한 수정을 보다 정확하고 쉽게 할 수 있다고 본다.

알고리즘이 추상적 실체라고 하지만 이론적이고 관념적으로만 존재하는 것이 아니고 실재적(real)이다. 즉 알고리즘은 프로그래밍 언어의 클래스 라이브러리에서, 웹 브라우저에서 웹 페이지를 구현하는 소프트웨어 형태로, 스프레드시트에 입력된 항목들을 분류하는 과정에서, 실질적으로 구현된다는 점에서 그렇다.

한편 알고리즘은 물질성(materiality)을 갖는다. 알고리즘은 프로그래밍을 통해 소프트웨어에 구현되고 이 소프트웨어는 특정한 작업을 수행하는데 이것은 세계에 구체적인 변화를 야기한다. 예를 들어, 소프트웨어의 지시로 작동되는 미사일이 실재하는 사물인 비행기를 폭발시킬 수 있다.

 

문화,

알고리즘의 속성, 특히 실재성과 물질성은 알고리즘의 문화를 이해하는 핵심 측면이다. 즉 알고리즘은 논리와 통제라는 요소를 통해 소프트웨어와 세계, 또는 프로그램과 사물 사이를 매개한다.

알고리즘이 지식이자 문제 해결 전략이라는 점은 중요한 함의를 갖는다. 알고리즘이 구현한 지식이나 문제 해결 전략이 유일한 것이 아니라 여러 대안들 중의 하나이며, 이것은 물질적인 영향을 줄 뿐만 아니라 사회의 그 무엇을 반영하고 있음을 의미하는 것이다. 이같이 알고리즘과 사회는 상호적(reciprocal)이다. 마노비치(2001)는 이를 '상호코드성(transcoding)'이라고 부른 바 있다.

예를 들어, 알고리즘이 구현된 인터페이스는 여러 대안들 중에서 어떠한 지식이 선택된 것인가. 전자책을 구현하기 위해 설계자는 종이책의 외향을 본떠 페이지, 목차, 레이아웃, 넘기기 방식 등을 포함하는 인터페이스를 구현한다. 동영상을 보여 주기 위해 동영상 재생 소프트웨어는 영화나 텔레비전의 화면을 모방한다. 이런 예들은 언뜻 당연한 것처럼 보이지만 하나의 선택이다. 이렇게 기존의 사회문화적 관습이 반영된 뉴미디어의 인터페이스는 다시 사회에 영향을 준다. 알고리즘의 코드와 사회적 코드는 이처럼 상호적이다.

 

일반적으로 알고리즘 문화는 알고리즘적 사고방식(algorithmic way of thinking)이 지배하는 문화라 할 수 있다. 알고리즘 문화는 크게 두 가지 차원에서 접근할 수 있는데, 그 하나는 소프트웨어 문화의 관점이고, 다른 하나는 지식 담론의 관점이다.

먼저 소프트웨어 문화의 관점은 알고리즘 문화를 소프트웨어가 지배적인 정보처리 메커니즘으로 자리잡은 문화로 이해한다. 마노비치(2008)가 말하는 '소프트웨어화(softwarization)'는 컴퓨터가 '미디어 기기'로 전환되는 과정을 설명하기 위해 고안한 개념으로, '기존의 미디어 테크놀로지가 소프트웨어로 전환되는 과정'으로 정의된다. 컴퓨터는 1940년대 이후 거의 40년에 걸쳐 연산장치(calculator)에서 벗어나 지금의 모습처럼 텍스트, 이미지, 사운드 등을 처리할 수 있는 이른바 '미디어 처리장치(media processor)'로 바뀌었다.

이런 소프트웨어화는 컴퓨터의 미디어화를 넘어 자동차, 냉장고, 텔레비전 등 우리 주위의 모든 기계장치들을 소프트웨어 장치로 전환시키는 단계에 이르렀다. 예를 들어, 텔레비전은 스마트TV에서 보듯 전자제품이 아니라 애플리케이션(application, App) 소프트웨어 재생장치라 할 수 있다. 우리는 이제까지 암묵적으로 TV를 '하드웨어로서 TV 수상기'와 동일하게 간주해 왔다. 이제 우리는 스마트폰, 태블릿PC, 스마트TV의 등장을 계기로 텔레비전에 대한 기존 인식을 바꾸지 않으면 안 된다. 즉 텔레비전은 소프트웨어가 된 것이다. 마노비치(2008)가 소프트웨어화를 '인간 미디어, 인간 기호, 인간 커뮤니케이션 역사에서 근본적으로 새로운 단계'에 진입하게 해 준 것으로 평가하고 있는데, 이제 모든 기기의 소프트웨어화로 성취된 소프트웨어 문화는 현대 문화의 또 다른 표현이라 해도 과언이 아니다.

한편 알고리즘 문화는 지식 담론의 관점에서 접근할 수도 있는데, 이런 관점에서 알고리즘은 순수한 추상척 실체로 간주될 수 없다고 본다. 미셸 푸코(Michel Foucault)의 진술(statement) 개념은 알고리즘을 이해하는 데 참고가 될 수 있다(Goffey, 2008). 푸코에 따르면, 진술은 언어의 화용론()적 기능이나 의미론적 기능으로 환원될 수 없으며, 진술의 역사적 존재, 그리고 그것을 통해 특정한 행위를 성취해 내는 방식에 주목해야 한다는 것이다. 푸코는 "말하는 것은 생각을 표현하고 알고 있는 것을 번역해 드러내는 것 이상으로 무엇인가를 행하는 것"이기에 추상적인 형식론적 접근으로 그 의미를 파악할 수 있는 것이 아니다. 푸코의 진술 개념을 알고리즘에 적용하면, 알고리즘은 추상적 실체라기보다는 일종의 '기계 담론(machinic discourse)'으로, 즉 알고리즘이 기계와 인간을 횡단(traverse)하며 작동하는 과정으로 파악해야 한다.

이런 관점에서 다음과 같은 문제들을 제기할 수 있다. 먼저 데이터와 같이 알고리즘은 그것과 연계되는 다른 요소들과 어떠한 관계를 갖는가? 이는 알고리즘이 데이터 구조와 독립적으로 고안되기는 하지만 데이터와 독특한 관계가 전제될 수밖에 없기 때문이다. 둘째로 소프트웨어, 특히 알고리즘은 어떠한 사회 조건에서 고안되고 설계되는가? 알고리즘은 진공 상태에서 개발되는 것은 아니며, 앞서 언급한 것처럼 사회문화적 측면들을 반영하게 된다. 셋째로 알고리즘은 사회적으로 인간학적으로 어떠한 영향을 미치는가? 독특한 조건 속에서 개발된 알고리즘은 독특한 수행성을 가질 수밖에 없으며, 이것이 알고리즘의 역사적 존재 의미를 보여 줄 것이다. 이런 질문들에 대한 대답은 이른바 '소프트웨어 연구(software studies)'의 주요한 영역이 될 것이다.

 

온라인사이트,

  • Manovich, L. (2008년). Software Takes Command. licensed under a Creative Commons License. [Online] Available: http://www.softwarestudies.com/softbook

...즘 이론.[ algorithm theory ]

주어진 문제를 푸는 방법과 수단은 종래에는 막연하게만 생각되어온 과제이다. 문제를 점점 확장해 가도 반드시 그것을 푸는 방법이 존재하는가? 이러한 것을 엄밀히 생각하는 것이 알고리즘 이론이다. 영국의 수학자인 A. M. Turing 튜링 머신이라는 사고 실험적인 컴퓨터를 정의했지만, 현재로는 그 문제를 푸는 튜링 머신이 설계 가능하다는 것이 그 문제를 푸는 알고리즘이 존재하는 일의 엄밀한 정의가 되었다.

 

이것은 Gödel, Church, Kleene 등의 수학자가 각각 다른 방법으로 알고리즘 개념을 엄밀하게 수학적으로 정의내렸지만, 후에 그들의 개념은 같다는 것이 증명되었다. 따라서 알고리즘 개념의 튜링 머신을 이용한 정의의 타당성이 존재한다는 것이 현재의 견해이다. 그것을 푸는 알고리즘이 존재하는지의 여부는 그것을 푸는 튜링 머신이 설계 가능할까 라는 문제로 귀착되지만 튜링 머신으로는 풀 수 없는 문제가 존재하는 것이 수학적으로 증명되고 있다. 이것은 현재 디지털 컴퓨터의 한계를 암시하는 것이기도 하다.

 

...즘 분석[ analysis of algorithm ]

알고리즘의 성능을 평가하기 위한 분석. 이 성능은 크게 그 수행 시간과 필요한 기억 장치의 양으로 평가되는데, 많은 경우에 수행 시간이 더 중요한 의미를 지닌다. 알고리즘의 분석 목적은 알고리즘 수행 시간을 예측하고 확인함으로써 더욱 효율적인 알고리즘을 개발하기 위한 것이다. 하나의 명령문을 수행하는 실제 시간은 컴퓨터 기종과 컴파일러에 의해 차이가 있으므로 계산 시간에 의한 분석은 명령문의 수행 빈도 수를 기준으로 한다. 이것은 사용하는 프로그래밍 언어나 컴파일러 기종에 관계없이 알고리즘으로부터 직접 구할 수 있다.

 

...즘 복잡도, [ algorithm complexity ]

알고리즘의 복잡한 정도를 나타내는 척도로서 수행 시간을 계산한 시간 복잡도 기억 공간의 소요량을 계산한 공간 복잡도가 있다.

 

알파 검사[ alpha test ]

개발하고 있는 소프트웨어를 조직 외부에서 검사하거나 유포하기 전에 질을 개선하기 위해 내부적으로 실시하는 평가 단계를 의미한다. 알파검사는 소프트웨어 개발자나 검사담당자가 피검사자를 관찰하면서 실시하는 것이 일반적이다. 이 용어는 테크놀로지기반 코스웨어 개발에도 적용되어 개발과정에서 활용되어 왔다.

 

일반적으로 개발자가 프로그램이나 하드웨어를 개발 단계에서 개발자의 개발이 끝난 직후에 실시하는 통합 검사. 이때 개발자 이외의 사용자가 검사를 하게 되며, 이 검사를 실시하는 초기 버전을 알파 버전이라고 한다. 대부분 비공개로 진행된다.

 

베타테스트

하드웨어나 소프트웨어를 공식적으로 발표하기 전에 오류가 있는지를 발견하기 위해 미리 정해진 사용자 계층들이 써 보도록 하는 테스트를 말함

외국어 표기

beta test(영어)

베타테스트는 알파테스트를 거친 프로그램을 정식프로그램이 되기 전에 사용자들로 하여금 테스트 하도록 한 것으로 특히 소프트웨어 개발에서의 베타테스트는 공식적인 소프트웨어 테스트의 두 번째 단계에 해당한다. 베타는 그리스 문자로 알파 다음의 두 번째 글자다. 기업은 신제품이 출시되기 전에 미리 정해진 고객들인 베타테스터들에게 소프트웨어를 심도 있게 사용해보고 문제점을 찾아내도록 하는 것이다. 가능한 한 소비자의 욕구와 기업 역량의 괴리를 채울 수 있는 수단이 바로 베타테스트 시스템인 셈이다. 이 베타테스트에는 클로즈 베타와 오픈 베타가 있다. 클로즈 베타는 말 그대로 지정된 인원을 뽑아서 하는 테스트를 말하고, 오픈 베타는 정식 서비스처럼 인원이나 다른 제한 없이 테스트하는 것을 말한다. 적은 인원으로 진행하는 클로즈 베타는 프로그램을 만든 사람과 대화하는 방식으로 테스트를 진행하기도 한다.

 

CMOS, [ complementary metal-oxide semiconductor ]

CMOS,

p 채널 MOS 트랜지스터와 n 채널의 그것을 서로 절연하여 동일 칩에 만들어 넣어 양자가 상보적으로 동작하도록 한 것. 소비 전력 μW 정도이고 동작은 고속, 잡음 배제성이 좋다. 전원 전압의 넓은 범위에서 동작하고, TTL에 적합하며 동일 회로 내에서 공존 가능하다. 팬아웃 용량도 크다.

 

주제어,

  • 알고리즘, 논리, 통제, 소프트웨어화, 마노비치, 기계 담론, 소프트웨어 연구,

출처 ^ 참고문헌,

[알고리즘 [algorithm] (천재학습백과 초등 소프트웨어 용어사전)

[알고리즘의 개요 (컴퓨터 개론, 2013..,)

컴퓨터인터넷IT용어대사전

[ⓒ 커뮤니케이션북스

[알고리즘 문화 (디지털 문화, 2013..,)

[Goffey, A. (2008년) Algorithm. In M. Fuller (Ed.), Software Studies: A Lexicon (pp. 15~20). Cambridge, MA: The MIT Press.

[Kowalski, R. (1079년) Algorithm = Logic + Control. Communication of the ACM, 22(7), 424~436.

[알고리즘 이론 [algorithm theory] (컴퓨터인터넷IT용어대사전, 2011.., 전산용어사전편찬위원회)

[알고리즘 분석 [analysis of algorithm] (컴퓨터인터넷IT용어대사전, 2011.., 전산용어사전편찬위원회)

[알고리즘 복잡도 [algorithm complexity] (컴퓨터인터넷IT용어대사전, 2011.., 전산용어사전편찬위원회)

[알파 검사 [alpha test] (컴퓨터인터넷 IT용어대사전, 2011.., 전산용어사전편찬위원회)

[알파검사 [-檢査] (HRD 용어사전, 2010. 9. 6., (사)한국기업교육학회)

[시사상식사전

[베타테스트 (시사상식사전, pmg 지식엔진연구소)

[CMOS [complementary metal-oxide semiconductor] (전기용어사전, 2011..,)

 

#알고리즘 #algorithm #알고리즘 이론 #algorithm theory #알고리즘의 개요 #알고리즘의 종류는 매우 다양 #분류하는 기준도 다양 #기초적인 알고리즘 #가장 적합한 알고리즘을 찾는 것이 중요 #수학자 #바그다드 왕립 의회 의원 #Mohammed Al Khwarizmi #이름에서 유래된 것 #문제를 해결하기 위해 구성 #일련의 순서화된 절차로 #조건을 만족 #0개 이상의 입력 #1개 이상의 출력이 있어야 한다 #모든 명령이 실행 가능해야 #하나의 문제를 해결 #알고리즘은 여러 개가 있을 수 있지만 #어떤 문제를 해결하기 위한 절차 #명령어들의 집합 #알고리즘 주어진 문제 #논리적으로 해결하기 위해 #필요한 절차 #방법 #명령어들을 모아놓은 것 #넓게는 사람 손으로 해결하는 것 #컴퓨터로 해결하는 것 #수학적인 것 #비수학적인 것을 모두 포함 #Goffey #Kowalski #알파 검사 #alpha test #알고리즘 이론 #algorithmtheory #알고리즘 복잡도 #algorithm complexity #논리 #통제 #소프트웨어화 #마노비치 #기계 담론 #소프트웨어 연구 #소프트웨어 #조직 외부에서 검사하거나 유포하기 전 #질을 개선하기 위해 #내부적으로 실시 #평가 단계를 의미 #알파검사는 소프트웨어 개발자 #검사담당자 #피검사자를 관찰하면서 실시하는 것이 일반적 #테크놀로지기반 #코스웨어 개발에도 적용 #개발과정에서 활용 #일반적으로 개발자가 프로그램 #하드웨어를 개발 단계 #개발자의 개발이 끝난 직후에 실시 #통합 검사 #개발자 #사용자가 검사 #검사를 실시 #초기 버전 #알파 버전 #대부분 비공개로 진행 #베타테스트 #알파테스트 #거친 프로그램 #정식프로그램 #CMOS #complementary metal-oxide semiconductor #p 채널 MOS #트랜지스터 #n 채널의 그것을 서로 절연 #동일 칩에 만들어 넣어 #양자가 상보적으로 동작하도록 한 것 #소비 전력 μW 정도 #동작은 고속 #잡음 배제성 #전원 전압 #넓은 범위에서 동작 #TTL에 적합 #동일 회로 내에서 공존 가능 #팬아웃 용량

 

 

'it, 컴퓨터 ,' 카테고리의 다른 글

(주)카카오, [ Kakao Corp. ]  (0) 2020.06.22
새 Microsoft Edge 소개,  (0) 2020.06.22
플랫폼 [platform]  (0) 2020.06.21
한글 붙여넣기 안될때,  (1) 2020.06.19
빌 게이츠, [ Bill Gates ],  (0) 2020.05.08