알고리즘에 대해 학습하기 원하시는 분들에게 사이트를 소개해드립니다.
알고리즘과 자료구조에 대해 막연히 어려운 분야이고, 이해하기 어려워 하시는 분들에게 도움이 될만한 사이트입니다. (물로 알고리즘과 자료구조가 쉬운 것은 아니죠?^^)
VisuAlgo.NET 은 이런 알고리즘과 자료구조를 시각화하여 쉽게 이해하고, 습득할 수 있도록 고안된 학습 사이트입니다.
시각화된 알고리즘과 자료구조를 통해 해당 원리에 대해 쉽게 이해하고, 배울 수 있으며, 또한 프로그래밍 코드도 함께 제시하여 실제 알고리즘과 자료구조를 프로그래밍을 통해 어떻게 구현할 수 있는지에 대한 방법까지 함께 제공합니다.
VisuAlgo.NET 은 2011년 싱가포르국립대학 스티브 하림 교수가 자료구조와 알고리즘을 학생들이 쉽게 이해하고, 배울 수 있도록 하기 위해 개발한 도구를 인터넷을 통해 공개한 것입니다.
한 번 방문해 보도록 할까요?^^
메인 화면부터 알록달록하니 상당히 친근한 느낌입니다.^^
컴퓨터 공학 또는 과학 분야에서 공부하는 학생이거나 관련 직종에서 일하시는 분이시라면 친숙한 단어들이 많이 보이실 겁니다.
정렬, 링크드 리스트, 해쉬 테이블, 바이너리 검색, 그래프 순회, 지오메트리 등등
주요 알고리즘 또는 자료구조에 대해 각각의 섹션(하나의 사각형 박스)으로 나뉘어져 있으며, 개별적으로 학습하실 수 있습니다.
참고로 사이트 가운데 상단에 대한민국 국기도 있는데, 이걸 보시고 앗 한국어 지원이다!! 라고 생각하고 눌러보시는 분들이 많으실 텐데.. (물론 저도 그럴거다 라고 생각해서 눌러보았지만..) 도메인 주소만 ko.visualgo.net 으로 바뀌고 영문으로 표기됩니다. ㅠ.ㅠ ㅎㅎㅎ
자료구조나 알고리즘 이해에 있어 크게 어려운 영어를 요구하는 것도 아니고, 대부분의 개발자는 알고리즘, 자료구조의 영어 표기나 단어에 익숙하실 것이기 때문에 영어더라도 이해하시는데, 크게 어려움은 없으실 겁니다.
한번 가장 친숙한 정렬(Sorting)을 눌러볼까요?
최상단에 다양한 정렬 알고리즘 종류(거품정렬, 선택정렬, 삽업정렬, 병합정렬, 퀵 정렬 등등) 가 표시되어 있습니다. 학습하기 원하는 정렬을 선택하고, 하단의 Create과 Sort 기능을 통해 초기 데이터를 생성하고, 정렬을 진행시킬 수 있습니다.
설정을 완료하였으면, 아래의 Go 버튼을 클릭하여 데이터를 정렬 시켜보겠습니다.
이제 데이터가 정렬되는 모습을 시각적으로 확인하실 수 있습니다.
또한 좌측 하단의 소스 코드 정보를 통해 현재 정렬 되어 가는 과정에서, 어느 부분의 코드가 실행되고 있으며, 어떤 결과 값이 나오고 있는지, 지속적으로 표시하여 주어 정렬 프로그램에 대한 이해도도 높여줍니다.
아래는 그래프 순회(Graph Traversal) 섹션의 화면입니다.
이번 포스팅은 사이트에 대한 소개에 대한 것이므로 개별 섹션에 대한 상세한 세부적인 활용 방법은 생략하도록 하겠습니다. 사이트 활용이 어렵지 않게 구성되어 있어 대부분의 개발자면 버튼 몇개만 눌러보면 어떻게 활용하면 되는지 금방 감이 오실 겁니다.^^
참고로 VisuAlgo는 현재 다음의 알고리즘과 자료구조에 대해 시각화 학습 도구를 제공하고 있습니다.
Sorting (정렬)
Bitmask (비트마스크)
Linked List (링크드 리스트)
Stack (스택)
Queue (큐)
Hash Table (해쉬 테이블)
Binary Heap (이진 힙)
Binary Search Tree (이진 탐색 트리)
AVL Tree (AVL 트리)
Grach Data Structure (그래프 자료 구조)
Union-find Disjoint SetsSegment Tree (구간 크리)
Binary Indexed Tree (BIT, 바이너리 인덱스 트리)
Generic Recursion Tree (포괄적인 트리 순환)
DAG (Directed Acyclic Graph, 비순환 방향 그래프)
Graph Traversal (그래프 순회)
Minimum Spanning Tree (최소 신장 트리)
Single-Source Shortest Paths (단일 소스 최단 경로)
Network Flow (네트워크 흐름)
Graph Matching (그래프 매칭)
Suffix Tree (서픽스(접미사) 트리)
Suffix Array (서픽스(접미사) 배열)
(Computational) Geometry (전산 기하학)
알고리즘과 자료구조에 대해 막연히 어렵게 느끼시고, 쉽게 접근하시지 못하셨던 분이시라면 비주알고를 통해서 좀 더 쉽고 재미있게 알고리즘과 자료구조에 대해 학습하시기를 기대합니다.^_^
'개발&컴퓨터 > 알고리즘' 카테고리의 다른 글
[알고리즘문제] 숫자 대응 (0) | 2015.04.18 |
---|---|
[알고리즘문제] 수열 추정 (0) | 2015.03.31 |
[알고리즘문제] 전화 수신 전환 문제 (0) | 2015.03.12 |
마방진 만들기 (소스 코드 포함) (0) | 2015.03.07 |
두 선분간의 거리 구하기 (4) | 2015.02.27 |