Soumettre la recherche
Mettre en ligne
アルゴリズムとデータ構造(初歩)
•
2 j'aime
•
1,153 vues
エンジニア勉強会 エスキュービズム
Suivre
アルゴリズムとデータ構造(初歩)
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 30
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
javaによるアルゴリズム入門の第一弾
javaによるアルゴリズム入門
javaによるアルゴリズム入門
RabbitFoot141 -kentsu141
個人的な勉強会での資料です。
最速でデータサイエンティストになる方法を考えてみた
最速でデータサイエンティストになる方法を考えてみた
Seiya Kitazume
データ構造とアルゴリズムの基本的な考え方を解説しています。
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
Takao Sumitomo
2011年10月7日
2011年10月7日
nukaemon
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
tmaehara
主に勉強用のスライド アルゴリズムとデータ構造について ・エラトステネスのふるい ・文字列照合 ・簡単なソート 立ち絵素材 臼井の会様
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
その場のノリでLTしたときの資料です。 正確さをまったく無視して、ざっくり人口知能を説明してみました。
5分で分か(った気にな)る人工知能入門
5分で分か(った気にな)る人工知能入門
尚行 坂井
Swiftビギナーズもくもく会、第1回用に30分で取り急ぎ作った資料
iosアプリ開発〜学習が開花して理解したこと〜
iosアプリ開発〜学習が開花して理解したこと〜
Naoki Numajiri
Recommandé
javaによるアルゴリズム入門の第一弾
javaによるアルゴリズム入門
javaによるアルゴリズム入門
RabbitFoot141 -kentsu141
個人的な勉強会での資料です。
最速でデータサイエンティストになる方法を考えてみた
最速でデータサイエンティストになる方法を考えてみた
Seiya Kitazume
データ構造とアルゴリズムの基本的な考え方を解説しています。
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
Takao Sumitomo
2011年10月7日
2011年10月7日
nukaemon
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
tmaehara
主に勉強用のスライド アルゴリズムとデータ構造について ・エラトステネスのふるい ・文字列照合 ・簡単なソート 立ち絵素材 臼井の会様
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
その場のノリでLTしたときの資料です。 正確さをまったく無視して、ざっくり人口知能を説明してみました。
5分で分か(った気にな)る人工知能入門
5分で分か(った気にな)る人工知能入門
尚行 坂井
Swiftビギナーズもくもく会、第1回用に30分で取り急ぎ作った資料
iosアプリ開発〜学習が開花して理解したこと〜
iosアプリ開発〜学習が開花して理解したこと〜
Naoki Numajiri
ジャストシステムの形態素解析技術
ジャストシステムの形態素解析技術
ジャストシステムの形態素解析技術
JustSystems Corporation
Itパスポート3
Itパスポート3
takadanopapa
拙著『問題解決力を鍛える!アルゴリズムとデータ構造』 が、IT エンジニア本大賞 2021 の特別賞を受賞しました。 そのときの講演資料です。
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料
Kensuke Otsuki
Discrimination- and privacy-aware patterns, Sara Hajian, Josep Domingo-Ferrer, Anna Monreale, Dino Pedreschi and Fosca Giannotti, Data Mining and Knowledge Discovery 29 (6), 1733-1782, 2015
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
LINE Corp.
自然言語等の自由な語彙・文型を用いて誰もが推論規則を書きやすくしたシステムを開発している。これにIF文、WHILE文、代入文、比較文、四則演算、文字列処理等を導入することにより、プログラミング的論理的思考と一般の論理的思考の両方に対応したプログラミング環境を、小中高校の教育現場や思考の補助の目的で提供したい。
自由文思考プログラミング環境における手続的機能の実装
自由文思考プログラミング環境における手続的機能の実装
Keisuke NAKAMURA
アルゴリズムとは プログラムとはなにか javaによるアルゴリズム入門 part1
javaによるアルゴリズム入門 part1
javaによるアルゴリズム入門 part1
RabbitFoot141
http://id.nii.ac.jp/1001/00206288/ 情報処理学会 コンピュータと教育研究会 156回研究発表会, 2020年8月29日 https://ce.eplang.jp/index.php?156%B2%F3%B8%A6%B5%E6%C8%AF%C9%BD%B2%F1
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
yamahige
131102ちゅらシム・プレゼン
131102ちゅらシム・プレゼン
Ikegami Keiichi
エスキュービズム新技術発表資料はこちら https://speakerdeck.com/scubism
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
A potential of AI in retail.
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
React/Redux/Redux-Saga+サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container serviceの検証
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
Contenu connexe
Similaire à アルゴリズムとデータ構造(初歩)
ジャストシステムの形態素解析技術
ジャストシステムの形態素解析技術
ジャストシステムの形態素解析技術
JustSystems Corporation
Itパスポート3
Itパスポート3
takadanopapa
拙著『問題解決力を鍛える!アルゴリズムとデータ構造』 が、IT エンジニア本大賞 2021 の特別賞を受賞しました。 そのときの講演資料です。
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料
Kensuke Otsuki
Discrimination- and privacy-aware patterns, Sara Hajian, Josep Domingo-Ferrer, Anna Monreale, Dino Pedreschi and Fosca Giannotti, Data Mining and Knowledge Discovery 29 (6), 1733-1782, 2015
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
LINE Corp.
自然言語等の自由な語彙・文型を用いて誰もが推論規則を書きやすくしたシステムを開発している。これにIF文、WHILE文、代入文、比較文、四則演算、文字列処理等を導入することにより、プログラミング的論理的思考と一般の論理的思考の両方に対応したプログラミング環境を、小中高校の教育現場や思考の補助の目的で提供したい。
自由文思考プログラミング環境における手続的機能の実装
自由文思考プログラミング環境における手続的機能の実装
Keisuke NAKAMURA
アルゴリズムとは プログラムとはなにか javaによるアルゴリズム入門 part1
javaによるアルゴリズム入門 part1
javaによるアルゴリズム入門 part1
RabbitFoot141
http://id.nii.ac.jp/1001/00206288/ 情報処理学会 コンピュータと教育研究会 156回研究発表会, 2020年8月29日 https://ce.eplang.jp/index.php?156%B2%F3%B8%A6%B5%E6%C8%AF%C9%BD%B2%F1
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
yamahige
131102ちゅらシム・プレゼン
131102ちゅらシム・プレゼン
Ikegami Keiichi
Similaire à アルゴリズムとデータ構造(初歩)
(8)
ジャストシステムの形態素解析技術
ジャストシステムの形態素解析技術
Itパスポート3
Itパスポート3
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
17.01.18_論文紹介_Discrimination- and privacy-aware patterns
自由文思考プログラミング環境における手続的機能の実装
自由文思考プログラミング環境における手続的機能の実装
javaによるアルゴリズム入門 part1
javaによるアルゴリズム入門 part1
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
131102ちゅらシム・プレゼン
131102ちゅらシム・プレゼン
Plus de エンジニア勉強会 エスキュービズム
エスキュービズム新技術発表資料はこちら https://speakerdeck.com/scubism
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
エンジニア勉強会 エスキュービズム
A potential of AI in retail.
小売りにおけるAIの可能性
小売りにおけるAIの可能性
エンジニア勉強会 エスキュービズム
React/Redux/Redux-Saga+サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
Azure container serviceの検証
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
エンジニア勉強会 エスキュービズム
はじめての品質
はじめての品質
はじめての品質
エンジニア勉強会 エスキュービズム
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
エンジニア勉強会 エスキュービズム
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
エンジニア勉強会 エスキュービズム
ほんのりTDD
ほんのりTDD
ほんのりTDD
エンジニア勉強会 エスキュービズム
IoTで何をやったか
IoTで何をやったか
IoTで何をやったか
エンジニア勉強会 エスキュービズム
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
エンジニア勉強会 エスキュービズム
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
エンジニア勉強会 エスキュービズム
VRのコンテンツ
VRのコンテンツ
VRのコンテンツ
エンジニア勉強会 エスキュービズム
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
エンジニア勉強会 エスキュービズム
レイアウトについて
レイアウトについて
レイアウトについて
エンジニア勉強会 エスキュービズム
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
エンジニア勉強会 エスキュービズム
IoTのIを考えてみる話
IoTのIを考えてみる話
IoTのIを考えてみる話
エンジニア勉強会 エスキュービズム
AzureのIaaSとかの話
AzureのIaaSとかの話
AzureのIaaSとかの話
エンジニア勉強会 エスキュービズム
About Quality
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
エンジニア勉強会 エスキュービズム
About project management
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
エンジニア勉強会 エスキュービズム
Plus de エンジニア勉強会 エスキュービズム
(20)
エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
小売りにおけるAIの可能性
小売りにおけるAIの可能性
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
はじめての品質
はじめての品質
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
ほんのりTDD
ほんのりTDD
IoTで何をやったか
IoTで何をやったか
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
VRのコンテンツ
VRのコンテンツ
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
レイアウトについて
レイアウトについて
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
IoTのIを考えてみる話
IoTのIを考えてみる話
AzureのIaaSとかの話
AzureのIaaSとかの話
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
Dernier
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
2024年4月に社内向けに開催した勉強会資料の社外公開版です
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
This is an introduction to MAPPO's paper.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
NewSQLの可用性構成パターン (OCHaCafe Season 8 #4 発表資料) 2024年5月8日(水) NTTデータグループ 技術開発本部 小林 隆浩
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20Lカタログ
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Syed Talal Wasim, Muzammal Naseer, Salman Khan, Ming-Hsuan Yang, Fahad Shahbaz Khan , "Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Grounding" arXiv2024 https://arxiv.org/abs/2401.00901v2
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
2022年10月27日に社内向けに開催した勉強会資料の社外公開版です(発表8分程度)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Jue Wang, Wentao Zhu, Pichao Wang, Xiang Yu, Linda Liu, Mohamed Omar, Raffay Hamid, " Selective Structured State-Spaces for Long-Form Video Understanding" CVPR2023 https://openaccess.thecvf.com/content/CVPR2023/html/Wang_Selective_Structured_State-Spaces_for_Long-Form_Video_Understanding_CVPR_2023_paper.html
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Dernier
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
アルゴリズムとデータ構造(初歩)
1.
0 アルゴリズムとデータ構造 エスキュービズム・テクノロジー エンジニア勉強会 December 4,2015 S-cubism Technology
Inc.
2.
今日の発表内容 • アルゴリズムとは • 1.データのソート •
2.ソートについて • 3.文字列の検索について • 実行してみた • まとめ 1
3.
アルゴリズムとは • アルゴリズム(英: algorithm)とは、数学、コン ピューティング、言語学、あるいは関連する分 野において、問題を解くための手順を定式化 した形で表現したものを言う。 (Wikipediaより引用) 2
4.
ITにおけるアルゴリズム • 処理を実行する手順をさすため、この上なく 重要 • より正確な処理、より早い処理を行わせるた めに常日頃から意識しておく必要がある 3
5.
1.データのソート • データの並び替え(ソート)を行うアルゴリズム にも方法は多岐にわたる • 元データの量やどういった処理を行わるかに より使い分けるべき 4
6.
おもなソート • ソートには大きく上げて3つの方法がある • バブルソート •
クイックソート • マージソート 5
7.
バブルソート、クイックソート • バブルソート: 先頭から順にデータを 参照していき、連続する データの並びが おかしい部分をひたすら並び替えて 正していく手法 6
8.
• 非常にシンプルな処理でソートができるが、 データ量が多くなると処理に尋常でない時間 を要するうえ、余計な処理も目立つ。 →ループを終えるとデータの最後の部分は ソート済みになっているはず • このバブルソートを改良したのが “クイックソート”である。 7
9.
• クイックソート: • 先述のバブルソートの改良版といえる手順 •
ある基準のデータを1つ決め、そのデータとす べてのデータを比較し、より小さいグループ、 より大きいグループの二つに分ける。 さらにグループ内で同様の手順を行い、 これ以上グループ分けできなくなれば終了 8
10.
マージソート • バブルソート、クイックソートより効率が良いと されている手法 • マージソートはデータを1つずつに分割し、 隣り合ったグループ同士をマージしながらソ ートしていく 9
11.
• クイックソート、マージソートを実際に行うと このようになる • クイックソート・・8:39 •
マージソート・・47:48 10
12.
最適なソートとは • ケースバイケースである。状況によって適した手法 を考慮して選択する必要がある。 • マージソートはクイックソートより効率が良いが、より 多くのメモリを必要とする一面もある •
データ量が多い場合はマージソート、クイックソート を用いるのが良いが、データ量が少ない場合はバ ブルソートで充分なケースも 11
13.
2.サーチについて • ご存じ、目的のデータが(どこに)あるかどうか を調べる手法 • 大きく分けて リニアサーチ バイナリサーチ の二種類がある。 12
14.
リニアサーチ • 先頭から順番にデータを探していき、目的の データがあればその場所を返す、という手法 • とてもシンプルで力づくな印象を受けるが、 不規則なデータ配列から目的のデータを検索 する場合は基本的にはこの手法が一番早い 13
15.
バイナリサーチ • 配列データに何らかの規則性がある場合、 その規則に則ってサーチを行えばより効率的 に目的のデータを見つけることができる。 • (整列された)データを大きく二つに分け、目的 のデータが分割した点より前にあるか後にあ るかを調べ続ける手法がバイナリサーチ (二分検索法)である。 14
16.
サーチの手法によるデータ量と計算量の関係 15 リニアサーチはy=O(N) バイナリサーチはy=O(logN)の関係性となり、 (整列された)データのサーチにおいては バイナリサーチが圧倒的に早いといえる。
17.
• 一方、バイナリサーチは データが”ソートされている必要がある”ため、 ソートを含めて考慮する必要がある • 既にソートされているデータ、あるいは一つの データに対して複数回のサーチを行う場合は バイナリサーチを、サーチの回数が少ない場 合はリニアサーチを用いるなど使い分けると よい 16
18.
3.文字列の検索について • 配列の中からデータを探し出す手法は先ほ どのリニアサーチ、バイナリサーチといったも の • 文字列の中から検索したいワードと一致する 部分があるかどうかを検索するのが文字列 検索 17
19.
• もっとも単純な文字列検索 • 検索キーの先頭と検索対象の文字列の文字を比較 •
文字列の文字と一致しなければ文字列の文字を一 字進める • 文字列の文字と検索キーの文字が一致したら検索 キーの次の文字を比較する • キーの途中で一致しない文字列が現れたら再度キ ーの先頭から比較する • 検索キーの最後の文字まで一致したら検索終了 18
20.
• 非常に単純でバグを生みづらいため、 現状この方式が多く用いられている • 検索効率に着目すると、文字列の長さをm、 検索キーの長さをnとするとO(mn)となる為 あまりいいとは言えない •
検索効率を重視したい場合は他の方式をも ちいるとよい 19
21.
KMP法(Knuth-Morris-Pratt Method) • 先ほどの手法から無駄を省くために、比較し て不一致だった際のルールを改善する手法 •
①:比較して不一致だった場合、キーの先頭 文字が出現するまでは比較を行わなくてもよ い • ②部分的に一致することがわかっている場合 は比較を行わなくてもよい 20
22.
KMP法の短所 • これにより検索量はO(n)となり、 (理論上は)大幅に効率が改善された。 • しかしアルゴリズムが複雑であるが故にオー バーヘッドが大きく、検索条件によっては 改善前の文字列検索の方が 良好なパフォーマンスを示すことも多い。 21
23.
現実的に優れた方法(BM法) • BM法(Boyer-Moore Method)とは 文字列検索の 「キーの先頭→末尾」の順に比較する処理を 「キーの末尾→先頭」の順に比較するように 変更した方法 22
24.
BM法のアルゴリスム • 1.パターンの末尾から先頭へ向かって比較を行う • 2.不一致の場合、本文側の文字がパターンに含ま れていない場合はパターンの先頭をその次の位置 に移動する •
3.不一致の場合に本文側の文字がパターンに含ま れている場合、パターンの中で最後にその文字が 出てくる部分を不一致点に移動させる。 ただし、この際パターンが前に戻ってしまう場合、 パターンを前に戻さず、一つ後ろに戻す。 23
25.
• 末尾から比較するメリット • 検索量もほぼO(m/n)となり、非常に優れてい るといえる。 24
26.
ソートを実行してみた例 • ソート対象:ランダムに生成された1000ある いは10000個の数字 • ソート手法:バブル、クイック、マージ •
調べる事柄:処理にかかる時間 25
27.
• ランダムな数字1000個をソートする場合 • バブルソート:
15~16[ms] • クイックソート: 1~2[ms] • マージソート: 1~2[ms] • ちなみにデータ量が10、100などの場合はバ ブルソートでも要する時間はごく短く、他2つ の手法と変わりはない。 26
28.
• データ量を10000にした場合 • バブルソート:
およそ1400~1600[ms] • クイックソート: 4~6[ms] • マージソート: 4~5[ms] • バブルソートが目に見えて処理に時間を要す るようになる。 • データ量が莫大な際のバブルソートは非推奨 27
29.
まとめ • 処理の効率、正確さ、速度、メモリの使用量 などは、どの手法を用いるかによって異なる 為、 どのような処理を求められているかを よく考えたうえで選択するのが好ましいと 考えられる。 28
30.
参考文献 • プログラミングの宝箱 アルゴリズムとデータ構造 第二版 (紀平拓男・春日伸弥
著) 29
Télécharger maintenant