生物資訊基礎 學習筆記 (2)

2021-08-18 02:40:02 字數 1463 閱讀 6998

問題描述:

給定一些 dna 序列  t 行 ,為了標記,往每一行的隨機位置中新增乙個特殊序列,每一行新增的都是一樣的序列。

插入的序列可能會產生基因突變,部分鹼基會發生改變。

現在,要已經知道 dna 序列,插入序列的長度 l , 因為插入的序列不穩定,很可能會發生基因突變,要找出最可能的一致串  l 。

嘗試長度為 l 的每乙個序列,該序列上每乙個位置都有四種可能 a c g t ,用該序列和dna的每一行尋找長度也為 l 的,海明距離最短的串,所有行的海明距離之和最短的,acgt 序列就可能是最優解。

複雜度很高 o ( t * l * l * num ^ l )

只能處理一些簡單的序列,只是實現了簡單的想法,正確性不明。日後會學習更好的演算法。

#include using namespace std ;

#define inf 0x3f3f3f3f

int t , l , num ; // dna 序列 t 行, 插入的鹼基長度 l, num 個鹼基

char pattern[105] ; // 儲存鹼基

string dna[1005] ; // 儲存 dna

string cur ;

int best_distance ; // 儲存最優解

vector < string > best ;

inline hai_ming_distance ( const string &cur , const string &dna_i )

int total_distance ( const string &cur )

if ( cnt != inf )

ans += cnt ; // ans 累加每一行最佳串和 cur 的海明距離

} return ans ;

}void dfs ( string cur , int x )

return ;

} for ( int i = 1 ; i <= num ; ++i ) // 對當前位置 x 嘗試四種鹼基

dfs ( cur + pattern[i] , x + 1 ) ; // 複雜度 num ^ l

}void init ()

void make_best ()

int main ()

結果

生物資訊學基礎知識Day2

總結個人對 r語言與bioconductor 生物資訊學應用 作的一些摘要。方便自己日後查閱。dna測序技術 dna sequencing 簡單來說就是確定四種核苷酸殘基 a t c和g 的排列順序。第一代測序技術,也稱sanger測序法 第二代測序技術,也稱深度測序或高通量測序 第三代測序的核心概...

生物資訊學基礎 包括Perl

1.生物資訊學 將電腦科學和數學應用於生物大分子資訊的獲取 加工 儲存 分類 檢索與分析,以達到理解這些生物大分子資訊的生物學意義的交叉學科。2.基本方法 搜尋資料庫 blast blat 序列分析 比對 注釋 找gene 統計分析 隱馬爾可夫模型hmm 貝葉斯分析模型 演算法 遺傳演算法 人工神經...

Python學習筆記,基礎2

在列表中儲存列表 巢狀 movie the holy grail 1975,director 91,starring actor1 actor2 actor3 列表內元素可以是各種資料型別,可巢狀 使用if條件語句和for迴圈語句輸出列表中巢狀的列表,本方法之判斷巢狀的第一層列表isinstance...