생물정보학 알고리듬 3/e
- 원서명Bioinformatics Algorithms, 3rd edition: An Active Learning Approach(ISBN 9780990374633)
- 지은이필립 콤포(Phillip Compeau), 파벨 페브즈너(Pavel Pevzner)
- 옮긴이한헌종, 한주현
- ISBN : 9791161756035
- 60,000원 (eBook 48,000원)
- 2022년 02월 21일 펴냄
- 페이퍼백 | 740쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
2022년 대한민국학술원 우수학술도서 선정도서
요약
과학 기술의 발달로 인류는 유전체의 정보를 염기서열 단위까지 좁혀서 생명체의 비밀을 밝혀내고 있다. 생명체에서 나오고 있는 데이터는 인류 역사상 가장 큰 규모의 데이터 크기를 자랑하고 있으며, 점점 더 커지고 다양해지는 데이터에 걸맞춰 좀 더 향상된 성능의 분석 소프트웨어를 요구하고 있다. 생물정보학 알고리듬은 이런 고성능 소프트웨어의 기반이 되는 지식이다. 이 책은 자칫 어려워 보일 수 있는 알고리듬이 어떻게 생물학적 데이터에 적용되는지 우리에게 친숙한 이야기로 풀어서 설명한다. 생물정보학 알고리듬에 익숙하지 않은 독자들과 깊이 있는 학습을 원하는 모든 분들에게 추천한다.
추천의 글
"생물정보학의 생생하고 독특한 내용은 분자생물학의 풍부한 최신 사례로 알고리듬적 사고에 동기를 부여한다."
― 마이클 워터만/ 서던 캘리포니아 대학교 생물학, 수학, 컴퓨터 과학 교수
"생물정보학의 기초를 가르치는 신선하고 독창적인 접근법이다. 이 교과서는 실습 연습문제와 이해를 돕는 생물학적 이야기와 엄밀한 수학적 지식을 결합해 독자의 이해를 높인다."
― 론 샤미르/ 텔아비브 대학교 컴퓨터 과학부 생물정보학 새클러 의장
이 책에서 다루는 내용
저자들의 인기 온라인 강좌를 바탕으로 한 이 책은 생물정보학을 학습하는 학생들에게 역동적인 접근 방식을 제시한다. 현대 생물학의 실무적인 도전과 알고리듬의 근본적인 아이디어 사이의 독특한 균형으로 생물학과 컴퓨터 과학 학생들의 흥미를 사로잡는다. 각 장은 ‘인간 게놈에 취약한 부분이 있는가?’ 또는 ‘분자 시계의 역할을 하는 DNA 패턴은 무엇인가?’와 같은 중요한 생물학적 질문으로 시작해 이 질문에 답변하는 데 필요한 정교한 알고리듬을 꾸준하게 개발한다. 필요한 연습문제는 본문에서 제공하며 독자들은 자동화된 코딩 과제가 실려 있는 생물정보학 학습 온라인 플랫폼 Rosalind(http://rosalind.info)에서 지식을 테스트해볼 수 있다.
상세 이미지
목차
목차
- 1장. DNA 복제는 유전체의 어디서부터 시작되는가?
- 1,000마일의 여행
- 복제 기점의 숨겨진 메시지
- DnaA 상자
- 황금벌레의 숨겨진 메시지
- 단어 세기
- 빈번한 단어 문제
- Vibrio cholerae의 빈번한 단어
- 더욱 놀라운 숨겨진 메시지
- 숨겨진 메시지의 범람
- 여러 유전체에서 숨겨진 메시지 찾기
- 군집 찾기 문제
- DNA를 복제하는 가장 간단한 방법
- 복제의 비대칭성
- 정방향 및 역방향 반가닥의 독특한 통계
- 숨어 있는 생물학적 현상 또는 통계적 우연?
- 탈아민화
- 비대칭 다이어그램
- 다른 메시지보다 이해하기 어려운 일부 숨겨진 메시지
- 대장균에서 DnaA 상자를 찾는 마지막 시도
- 에필로그: ori 예측의 복잡성
- 열린 문제
- 박테리아 유전체의 다중 복제 기점
- 고세균에서 복제 기점 찾기
- 효모에서 복제 기점 찾기
- 문자열에서 패턴 확률 계산
- 충전소
- 빈도 배열
- 패턴과 숫자를 서로 변환하기
- 정렬을 사용해 빈번한 단어 찾기
- 군집 찾기 문제 해결
- 미스매치를 포함한 자주 나오는 단어 문제 해결
- 문자열 이웃 생성
- 정렬로 미스매치를 포함한 빈번한 단어 찾기
- 돌아가기
- Big - O 표기법
- 문자열에서 패턴의 확률
- 생물학에서 가장 아름다운 실험
- DNA 가닥의 방향성
- 하노이 타워
- 겹치는 단어 역설
- 참고 문헌
- 2장. 분자 시계 역할을 하는 DNA 패턴은 무엇일까?
- 우리는 시계 유전자를 갖고 있을까?
- 생각보다 쉽지 않은 모티프 찾기
- 저녁 요소 찾기
- 모티프와 숨바꼭질
- 모티프 검색: 무차별 대입 알고리듬
- 모티프에 점수 매기기
- 모티프에서 프로필 행렬과 컨센서스 문자열
- 더 적절한 모티프 점수 계산 함수
- 엔트로피와 모티프 로고
- 모티프 찾기에서 중앙 문자열 찾기까지
- 모티프 찾기 문제
- 모티프 찾기 문제의 재구성
- 중앙 문자열 문제
- 모티프 찾기 문제를 다시 만든 이유
- 탐욕 모티프 검색
- 주사위를 굴리고자 프로필 행렬 사용하기
- 탐욕 모티프 검색 분석
- 모티프 검색과 올리버 크롬웰
- 내일 해가 뜨지 않을 확률은 얼마인가?
- 라플라스의 승계 법칙
- 탐욕 모티프 검색의 발전
- 무작위 모티프 검색
- 주사위로 모티프 찾기
- 무작위 모티프 검색이 작동하는 이유
- 무작위 알고리듬은 어떻게 잘 작동하는가?
- 깁스 샘플링
- 깁스 샘플링의 작동
- 에필로그: 결핵균은 어떻게 항생제를 피하려고 동면할까?
- 충전소
- 중앙 문자열 해결
- 돌아가기
- 유전자 발현
- DNA 어레이
- 뷔퐁의 바늘
- 모티프 찾기의 복잡성
- 상대적 엔트로피
- 참고 문헌
- 3장. 유전체는 어떻게 조립하는가?
- 폭발하는 신문들
- 문자열 재구축 문제
- 유전체 조립은 당신 생각보다 더 어렵다
- 문자열을 k-mer로부터 재구성하기
- 반복 서열은 유전체 조립을 어렵게 한다
- 겹침 그래프에서의 움직임과 같은 문자열 재구축
- 문자열에서 그래프로
- 유전체가 사라진다
- 그래프 표현법 두 가지
- 해밀턴 경로와 범용 문자열
- 문자열 재구축을 위한 또 다른 그래프
- 노드 접착 및 드 브루인 그래프
- 드 브루인 그래프에서 움직이기
- 오일러 경로
- 드 브루인 그래프를 구축하는 또 다른 방법
- k-mer 구성으로부터 드 브루인 그래프 구축하기
- 드 브루인 그래프 대 겹침 그래프
- 쾨니히스버그의 7개의 다리
- 오일러 정리
- 오일러 정리에서부터 오일러 순환 경로를 찾는 알고리듬까지
- 오일러 순환 경로 구축하기
- 오일러 순환 경로에서 오일러 경로로
- 범용 문자열 구축하기
- 리드 쌍으로부터 유전체 조립하기
- 리드에서 리드 쌍으로
- 리드쌍을 가상의 긴 리드로 바꾸는 방법
- 구성에서 쌍체 구성으로
- 쌍을 이루는 드 브루인 그래프
- 쌍을 이루는 드 브루인 그래프의 함정
- 에필로그: 유전체 조립이 실제 시퀀싱 데이터를 마주하다
- 리드들을 k-mer들로 쪼개기
- 유전체를 컨티그들로 쪼개기
- 오류가 많은 리드들을 조립하기
- 드 브루인 그래프에서 에지의 다양성 추론하기
- 충전소
- 인접 행렬을 접착하는 효과
- 모든 오일러 순환 경로 만들기
- 쌍을 이루는 드 브루인 그래프의 경로를 따라서 문자열 구축하기
- 그래프의 최대 비분기 경로
- 돌아가기
- DNA 시퀀싱 기술의 짧은 역사
- 인간 유전체의 반복 서열
- 그래프
- 이코시안 게임
- 다루기 쉬운 문제와 다루기 어려운 문제
- 오일러에서 해밀턴 그리고 드 브루인으로
- 칼리닌그라드의 일곱 다리
- 이중 가닥 DNA를 조립할 때의 함정
- BEST 정리
- 참고 문헌
- 4장. 항생제의 서열은 어떻게 알아낼까?
- 항생제의 발견
- 박테리아는 어떻게 항생제를 만드는가?
- 유전체가 펩티드를 암호화하는 방법
- 바실루스 브레비스 유전체의 어떤 부분이 티로시딘을 암호화하는가?
- 선형에서 고리형 펩티드로
- 분자생물학 중심 원리 회피
- 항생제를 작게 조각 내 서열 해독
- 질량 분석법 소개
- 고리형 펩티드 시퀀싱 문제
- 고리형 펩티드 시퀀싱의 브루트 포스 알고리듬
- 분기 한정법 알고리듬을 고리형 펩티드 시퀀싱에 적용
- 골프를 만난 질량 분석법
- 이론에서부터 실제 스펙트럼으로
- 오류가 있는 스펙트럼에 고리형 펩티드 시퀀싱 적용
- 20에서 100개 이상의 아미노산
- 스펙트럼 컨볼루션으로 문제 해결
- 에필로그: 가상의 스펙트럼에서 실제 스펙트럼으로
- 열린 문제
- 순환 도로와 유료 도로 문제
- 영장류에서 고리형 펩티드 시퀀싱
- 충전소
- 펩티드의 이론 스펙트럼 생성
- CYCLOPEPTIDESEQUENCING은 얼마나 빠를까?
- 펩티드 Leaderboard 자르기
- 돌아가기
- 가우스와 리센코주의
- 코돈의 발견
- 쿼럼 센싱
- 분자 질량
- 셀레노시스테인과 피롤리신
- 유료 도로 문제의 의사 다항식 알고리듬
- 분할 유전자
- 참고 문헌
- 5장. DNA 서열들을 비교하려면 어떻게 해야 할까?
- 비리보솜 코드 해독하기
- RNA 넥타이 클럽
- 단백질 비교에서 비리보솜 코드까지
- 종양 유전자와 성장 인자의 공통점은 무엇일까?
- 서열 정렬에 대한 소개
- 서열 정렬은 게임과 같다
- 문자열 정렬과 최장 공통 하위문자열
- 맨해튼 관광객 문제
- 최적의 관광 코스는 무엇일까?
- 임의의 방향성 그래프에서 관광하기
- 서열 정렬은 맨해튼 관광객 문제가 위장하고 있는 것일 뿐이다
- 동적 프로그래밍 소개: 변화 문제
- 탐욕스럽게 거스름돈 받기
- 재귀적으로 돈 거슬러 주기
- 동적 프로그래밍을 사용한 거스름돈 계산
- 다시 맨해튼 관광객 문제로
- 맨해튼 문제에서 임의의 방향성 비순환 그래프로
- 서열 정렬은 유사 - 맨해튼 그래프를 구축하는 것과 같다
- 임의의 DAG에 동적 프로그래밍 적용하기
- 위상학적 순서대로 나열하기
- 정렬 그래프 역추적하기
- 정렬 점수
- LCS 점수 모델의 문제는 뭘까?
- 점수 행렬
- 전역 정렬에서 지역 정렬까지
- 전역 정렬
- 전역 정렬의 한계
- 정렬 그래프에서 공짜 택시 타기
- 서열 정렬의 다양한 모습
- 수정 거리
- 적합 정렬
- 겹침 정렬
- 서열 정렬에서 삽입과 삭제에 대한 페널티를 주는 방법
- 어파인 갭 페널티
- 맨해튼을 3개의 층으로 구축하기
- 공간 효율적인 서열 정렬
- 선형적 메모리를 사용해 정렬 점수 계산하기
- 중간 노드 문제
- 놀랍도록 빠르고 메모리 효율적인 정렬 알고리듬
- 중간 에지 문제
- 에필로그: 다중 서열 정렬
- 3차원 맨해튼 구축하기
- 탐욕 다중 정렬 알고리듬
- 돌아가기
- 개똥벌레와 비리보솜 코드
- 도시를 만들지 않고 LCS 찾기
- 위상학적 나열 만들기
- PAM 점수 행렬
- 분할 및 정복 알고리듬
- 다중 정렬에 점수 매기기
- 참고 문헌
- 비리보솜 코드 해독하기
- 6장. 인간 유전체에도 연약한 영역이 있을까?
- 쥐와 남자
- 사람과 쥐의 유전체는 얼마나 다를까?
- 합성 블록
- 반전
- 재배열 핫스팟
- 염색체 진화의 무작위 절단 모델
- 반전을 통한 나열
- 반전 나열을 위한 탐욕적 발견법
- 절단점
- 절단점이란 무엇인가?
- 절단점 개수 세기
- 절단점을 제거하는 반전 나열
- 종양 유전체를 재배열하기
- 단일 염색체에서 다중 염색체로
- 전좌, 결합, 분열
- 유전체에서 그래프로
- 2 -절단
- 절단점 그래프
- 2-절단 거리 계산하기
- 인간 유전체의 재배열 핫스팟
- 무작위 절단 모델과 2-절단 거리 이론의 만남
- 취약 절단 모델
- 에필로그: 합성 블록 구축하기
- 유전체 점 도표
- 공유하고 있는 k - mer들 찾기
- 공유 k - mer로부터 합성 블록 구축하기
- 합성 블록을 그래프의 연결된 요소들로 생각하기
- 미해결 문제: 재배열이 박테리아 진화의 비밀을 밝힐 수 있을까?
- 충전소
- 유전체에서 절단점 그래프 만들기
- 2-절단 문제 해결하기
- 돌아가기
- X 염색체의 유전자는 왜 잘 보존돼 있는 걸까?
- 유전체 재배열의 발견
- 지수 분포
- 빌 게이츠와 데이비드 X. 코헨의 팬케이크 뒤집기
- 반전을 사용해 선형 순열 나열하기
- 참고 문헌
- 쥐와 남자
- 7장. 어떤 동물이 우리에게 SARS를 옮겼을까?
- 가장 빠른 전염병
- 메트로폴 호텔에서 생긴 문제
- SARS의 진화
- 거리 행렬을 진화 트리로 바꾸기
- 코로나 바이러스 유전체에서 거리 행렬 만들기
- 진화 트리를 그래프로 나타내기
- 거리 기반 계통 발생 구축
- 거리 기반 계통 발생 구축을 위한 알고리듬을 향해
- 이웃하고 있는 잎 탐색하기
- 가지의 길이 계산하기
- 가산적 계통 발생
- 트리의 가지 다듬기
- 가지 붙이기
- 거리 기반 계통 발생을 구축하기 위한 알고리듬
- 코로나 바이러스의 진화 트리 구축하기
- 최소 제곱을 사용해 거리의 근사값에 기반한 계통 발생을 구축하는 방법
- 초거리 진화 트리
- 이웃-연결 알고리듬
- 거리 행렬을 이웃 - 연결 행렬로 바꾸는 방법
- 이웃-연결 알고리듬으로 코로나 바이러스 분석하기
- 트리 구축에 있어서 거리 기반 접근 방법의 한계점
- 특성-기반 트리 재구축
- 특성표
- 해부학적 특성에서 유전적 특성으로
- 곤충의 날개는 얼마나 많은 진화에 의해 만들어졌을까?
- 최소 단순성 문제
- 최대 단순성 문제
- 에필로그: 진화 트리로 범죄에 맞서다
- 돌아가기
- HIV는 언제 유인원에서 인간으로 전파된 걸까?
- 거리 행렬에 적합한 트리 찾기
- 네 점 조건
- SARS를 옮긴 것은 박쥐일까?
- 이웃-연결 알고리듬이 어떻게 이웃하는 잎을 찾는 것일까?
- 이웃-연결 알고리듬에서 가지의 길이 계산하기
- 자이언트 판다: 곰일까 라쿤일까?
- 인간은 어디에서 왔을까?
- 참고 문헌
- 가장 빠른 전염병
- 8장. 효모는 어떻게 와인 제조사가 됐을까?
- 와인 제조의 진화적 역사
- 우린 언제부터 알코올에 중독돼 온 걸까?
- 이중영양적 전환
- 이중영양적 전환에 관련된 유전자 탐색하기
- 다른 운명을 맞이하게 된 두 가지 진화 가설
- 효모 유전자 중 어떤 것들이 이중영양적 전환을 이끌어 내는가?
- 클러스터링 개론
- 유전자 발현량 분석
- 효모 유전자 클러스터링
- 좋은 클러스터링 원칙
- 클러스터링을 최적화 문제로 바라보기
- 최장 최초 횡단
- k-Means 클러스터링
- 제곱 왜곡 오차
- k-means 클러스터링과 무게 중심
- 로이드 알고리듬
- 중심적에서 클러스터로 그리고 다시 반대로
- 로이드 알고리듬 초기화하기
- k-means++ 초기화
- 이중영양적 전환에 관련된 유전자들을 클러스터링하기
- k-Means 클러스터링의 한계점
- 동전 던지기에서 k-Means 클러스터링으로
- 편향된 정도를 알 수 없는 동전 던지기
- 계산 문제는 어디 있는가?
- 동전 던지기에서 로이드 알고리듬으로
- 클러스터링으로 돌아와서
- 동전 던지기에서 소프트 결정 내리기
- 기대값 극대화: E-step
- 기대값 극대화: M-step
- 기대값 극대화 알고리듬
- 소프트 k-Means 클러스터링
- 클러스터링에 기대값 극대화 알고리듬 적용하기
- 중심점에서 소프트 클러스터로 가기
- 소프트 클러스터에서 중심점으로 가기
- 계층 클러스터링
- 거리 기반 클러스터링에 대한 소개
- 트리에서 클러스터 추론하기
- 계층 클러스터링을 사용해 이중영양적 전환 분석하기
- 에필로그: 암 샘플 클러스터링하기
- 돌아가기
- 전장 유전체 복제일까 아니면 연속적인 단일 유전자 복제일까?
- 유전자 발현량 측정하기
- 마이크로어레이
- 무게 중심 이론의 증명
- 발현량 행렬을 거리/유사도 행렬로 바꾸는 방법
- 클러스터링과 손상된 클리크들
- 참고 문헌
- 와인 제조의 진화적 역사
- 9장. 질병을 일으키는 돌연변이는 어떻게 찾는 걸까?
- 오도 증후군의 원인은 무엇일까?
- 다중 패턴 매칭에 대한 소개
- 패턴들을 트라이로 만들기
- 트라이 구축하기
- 트라이를 다중 패턴 매칭 문제에 적용하기
- 유전체 전처리로 대신하기
- 접미사 트라이에 대한 소개
- 패턴 매칭에 접미사 트라이 사용하기
- 접미사 트리
- 접미사 배열
- 접미사 배열 구축하기
- 접미사 배열을 사용한 패턴 매칭
- 버로우즈-휠러 변형
- 유전체 압축
- 버로우즈-휠러 변환 구축하기
- 반복 서열에서 런으로
- 버로우즈-휠러 변환을 거꾸로 되돌리는 방법
- 버로우즈 - 휠러 변환을 되돌리려는 첫 번째 시도
- 처음 - 끝 특성
- 처음 - 끝 특성을 사용해 버로우즈 - 휠러 변환 되돌리기
- 버로우즈-휠러 변환을 사용한 패턴 매칭
- 버로우즈 - 휠러를 사용한 첫 번째 패턴 매칭 시도
- 패턴의 끝에서부터 뒤로 가기
- 끝 -처음 연결
- 버로우즈-휠러 패턴 매칭의 속도 높이기
- 끝-처음 연결을 횟수 배열로 바꾸기
- 버로우즈-휠러 행렬에서 첫 번째 열을 제거하는 방법
- 일치하는 패턴들의 위치는 어디인가?
- 과학 역사의 한 페이지를 장식한 버로우즈와 휠러
- 에필로그: 미스매치를 허용하는 리드 매핑
- 대략적인 패턴 매칭에서 정확한 패턴 매칭으로 나아가는 방법
- BLAST: 서열을 데이터베이스에 대조하기
- 버로우즈- 휠러 변환을 사용한 대략적인 패턴 매칭
- 충전소
- 접미사 트리 구축하기
- 최장 공유 하위 문자열 문제의 해결 방법
- 부분 접미사 배열 구축하기
- 돌아가기
- 표준 인간 유전체
- 인간 유전체에서의 재배열, 삽입, 삭제
- 아호-코라식 알고리듬
- 접미사 트리에서 접미사 배열 만들기
- 접미사 배열에서 접미사 트리까지
- 이진 탐색
- 참고 문헌
- 10장. 생물학자들은 왜 아직까지 HIV 백신을 개발하지 못했는가?
- HIV 형질 분류하기
- HIV는 어떻게 인간의 면역 체계를 피하는 걸까?
- 서열 정렬의 한계점
- 야쿠자와 도박하기
- 딜러의 소매에 숨어 있는 2개의 동전
- CG-아일랜드 찾기
- 은닉 마코프 모델
- 동전 던지기에서 은닉 마코프 모델까지
- HMM 도표
- 카지노 문제를 수식으로 재구성하기
- 복호화 문제
- 비터비 그래프
- 비터비 알고리듬
- 비터비 알고리듬은 얼마나 빠를까?
- 특정 HMM에서 가장 그럴듯한 결과물 찾기
- 서열 정렬을 위한 프로필 HMM
- HMM과 서열 정렬은 어떤 관련이 있는가?
- 프로필 HMM 구축하기
- 프로필 HMM에서의 전이 확률과 방출 확률
- 프로필 HMM을 사용해 단백질 분류하기
- 프로필 HMM에 단백질 정렬하기
- 유사 횟수의 귀환
- 골치 아픈 침묵 상태 문제
- 프로필 HMM은 실제로 유용한가?
- HMM의 매개변수 배워 보기
- 감춰진 경로를 알고 있을 때 HMM 매개변수 추정하기
- 비터비 학습
- 매개변수 추정을 위한 소프트 결정
- 소프트 복호화 문제
- 순방향 - 역방향 알고리듬
- 바움-웰치 학습
- HMM의 다양한 모습
- 에필로그: 자연은 발명가가 아니라 수선가다
- 돌아가기
- 붉은 여왕 효과
- 당화
- DNA 메틸화
- 조건부 확률
- 참고 문헌
- HIV 형질 분류하기
- 11장. 티라노사우르스는 단지 큰 닭일까?
- 고생물학과 계산의 만남
- 이 샘플에는 어떤 단백질들이 있을까?
- 이상적 스펙트럼 해석
- 이상 스펙트럼에서 실제 스펙트럼으로
- 펩티드 시퀀싱
- 스펙트럼에 맞는 펩티드 점수
- 접미사 펩티드는 어디에 있는가?
- 펩티드 시퀀싱 알고리듬
- 펩티드 식별
- 펩티드 식별 문제
- 미지의 티렉스 단백질체에서 펩티드 식별
- 펩티드-스펙트럼 일치 찾기
- 펩티드 식별과 무한 원숭이 정리
- 거짓 발견 비율
- 원숭이와 타자기
- 펩티드 스펙트럼 일치의 통계적 의의
- 스펙트럼 사전
- 티렉스 펩티드: 오염 물질일까 아니면 고대 단백질의 보물 창고일까?
- 헤모글로빈 수수께끼
- 공룡 DNA 논란
- 에필로그: 변형되지 않은 펩티드에서 변형된 펩티드로
- 번역 후 변형
- 변형 탐색을 정렬 문제로
- 스펙트럼 정렬을 위한 맨해튼 그리드 생성
- 스펙트럼 정렬 알고리듬
- 돌아가기
- 유전자 예측
- 그래프에서 모든 경로 찾기
- 반대칭 경로 문제
- 스펙트럼을 스펙트럼 벡터로 변환
- 무한 원숭이 정리
- 스펙트럼 사전의 펩티드 확률 공간
- 육상 공룡은 정말 새의 조상일까?
- 가장 가능성 높은 펩티드 벡터 문제 해결하기
- 스펙트럼을 스펙트럼 벡터로 변환하기 위한 매개변수 선택
- 참고 문헌
- 부록. 의사 코드 소개
- 의사 코드란?
- 의사 코드의 기본
- if 조건문
- for 반복문
- while 반복문
- 재귀 프로그래밍
- 배열
도서 오류 신고
정오표
정오표
[p. 31 : 정오표 주소]
http://www.acornpub.co.kr/book/ioinformatics-3e
->
http://www.acornpub.co.kr/book/bioinformatics-3e
[p.47 : 1행]
대장균(Eschericia coli, E. coli)
->
대장균(Escherichia coli, E. coli)
[p.186 : 3행]
TAATGCCATGGGATGTT
->
TAATGGGATGCCATGTT
[p.697 : 첫번째 의사 코드]
else
if a<c
return c
else
return b
->
else
if a<c
return a
else
return c
[p.701 : 아래에서 5행]
ai ← ai - 1 + ai - 2
->
ai ← ai-1 + ai-2
[p.701 : 아래에서 3행]
(1, 1, 2, 3, 4, 8, ...)
->
(1, 1, 2, 3, 5, 8, ...)