算法设计与分析——算法基础初步了解

article/2025/10/28 17:55:10

算法的概念

算法:一个有计算步骤构成的序列,可以将一组输入值转换成相应的输出值。或可以用例解决一个明确的问题。
问题:输入及相应输出的描述:

 算法的特点:确定性、可行性、输入和输出及有穷性。

正确的算法;停机并给出符合问题的定义的输出。

研究算法的基本意义

算法涉及到解决问题的:正确性、可行性以及效率。

以效率为例:对1M数据进行排序

 算法与其他技术的关系

硬件设计——布线算法

图形界面——图形生成、处理等

面向对象——编译器设计

局域网和广域网——冲突避免、路由、交换

算法无处不在。

算法设计方法简介

增量式

逐步求解的过程,如插入排序

思考题:

给定一个整数数组A,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例:

输入:[-2,1,-3,4,-1,2,1,-5,4]

输出:6
解释:连续子数组 | [4,-1,2,1] 的和最大,为6。

 分治策略:一归并排序为例

归并过程示意图:

 

 伪码:

1: n1←q − p + 1
2: n2←r − q
3: create arrays L[1 · · · n1 + 1] and R[1 · · · n2 + 1]
4: for i←1 to n1 do
5: L[i]←A[p + i − 1]
6: end for
7: for j←1 to n2 do
8: R[j]←A[q + j]
9: end for
10: L[n1 + 1]←∞
11: R[n2 + 1]←∞
12: i←1
13: j←1
14: for k←p to r do
15: if L[i] ≤ R[j] then
16: A[k]←L[i]
17: i←i + 1
18: else
19: A[k]←R[j]
20: j←j + 1
21: end if
22: end for
23: if p < r then
24: q←b p+r 2 c
25: MERGE-SORT(A, p, q)
26: MERGE-SORT(A, q + 1, r)
27: MERGE(A, p, q, r)
28: end if

动态规划:

一种强有力的技术;

从小的子问题的解逐步计算出大问题的解;

计算过程通过动态填表实现;

贪心策略:

最常用的启发策略;

但常常"贪心"不能保证得到好的结果

有些问题满足一些特定性质,可以保证"贪心"一定可以产生最好的结果。

搜索

几乎是通用的办法;

不过开销巨大

循环不变性法

算法正确性分析循环是关键、

以插入排序正确性分析:

L emma 1
在每次循环开始时(第j步) ,A[1,j- 1]是有序的。
Proof.
初始时: A[1,j- 1]中只有一个数,显然成立。
保持性:在循环迭代开始前成立,迭代中,while循环找到正确位
置插入A[j]。所以,这步迭代后命题仍成立。
终止时:将循环退出时的j值带人引理,得到插入排序的正确性。

分析算法,归纳出循环不变性(循环迭代过程,始终成立的命
题)。
 Initialization:在第一次循环开始前不变性是满足的。
 Maintenance:如果在某次迭代前不变性满足,在这次迭代后也
满足不变性。
 Termination:循环结束后,不变性可以提供程序正确性的有用信
息。
例2,归并过程的正确性
Lemma 2
在MERGE中,第14步循环每次开始时,有Ap, k―1]是有序的;

Alp, k一1]是最小的k 一 p个元素;

L[i]是L中待合并的元素中最小的;

R[j]是R中待合并的元素中最小的。

Initialization: k = p,i= 1,j = 1,显然成立。o Maintenance:若L[团]≤R[i],则

L[i]是所有剩下的元素中最小的;

而A[p….k-1]中的元素均大于等于L[i],因此。A[p…k]是所有元素中最小的k 一p+1个元素;

由于L中的数是排好序的,因此L[+1]将是L中剩下元素中最小的;

R[i]仍然是R中最小的。

若L[团]>R[i],可以进行类似讨论。

Termination:循环结束后,k=r+1,代入不变性1,得A[p…r]有序。
 


http://chatgpt.dhexx.cn/article/gl0qFANy.shtml

相关文章

算法设计与分析基础知识

一、算法设计基础 算法是&#xff08;algorithm&#xff09;是对特定问题求解步骤的一种描述&#xff0c;是指令的有限序列。 算法的五个特性&#xff1a; 输入&#xff1a;一个算法可以有零个或多个输入。 输出&#xff1a;一个算法有一个输出或多个输出。 有穷性&#xff08;…

为你的股票绘制趋势图

手里有一点点公司的股票&#xff0c; 拿不准在什么时机抛售&#xff0c; 程序员也没时间天天盯着看&#xff0c;不如动手写个小程序&#xff0c; 把股票趋势每天早上发到邮箱里&#xff0c;用 python 的 pandas, matplotlib 写起来很容易&#xff0c; 几十行代码搞定。 准备环…

用PYTHON画图 看股票/数字货币的趋势分析 带你直观理解指标 K线图

用PYTHON画图 看股票/数字货币的趋势分析 带你直观理解指标 本文章将用PYTHON 画图 以比特币&#xff08;BTC&#xff09;为例 进行画图分析 &#xff08;小白向&#xff09; Pycharm平台编写 所用到的python库 import requests from lxml import etree import math import …

Plotly中绘制三种经典的股票交易图表(含视频讲解)

作者&#xff1a;Lemon 来源&#xff1a;Python数据之道 Plotly中绘制三种经典的 股票交易图表&#xff08;含视频讲解&#xff09; 大家好&#xff0c;我是 Lemon 。 背景 前一段时间&#xff0c; Lemon 发了一期视频&#xff0c;分享了 Plotly 和 Dash 在投资领域的应用案例。…

如何在股票软件画波浪?波浪原理?初级应用画线

如何在股票软件画波浪&#xff1f;波浪原理?初级应用画线 听语音 浏览&#xff1a;1|更新&#xff1a;2018-03-13 10:07|标签&#xff1a;股票 1 2 3 4 5 6 7 分步阅读 波浪理论最主要特征就是它的通用性&#xff0c;在股市中是一个十分重要的技术研究方向&#xff0c;一旦成…

使用Python生成股票K线图

可视化股票数据&#xff0c;这里只做简单的处理&#xff0c;只显示k线图。选取的是海通证券&#xff08;600837&#xff09;2020年1月1日之后150个交易日的数据。这里代码不多&#xff0c;没有封装成方法&#xff0c;代码如下。数据是提前获取的&#xff0c;获取方法见&#xf…

Python获取股票数据并绘制相应K线图,看这个就够了!

Python对股票的K线可视化 前言说明注意 数据获取Tushare获取股票数据获取医疗器械板块数据&#xff08;代码部分&#xff09;获取股票数据&#xff08;代码部分&#xff09; 数据预处理变量中文化&#xff08;代码部分&#xff09; K线绘制代码部分结果展示 写在最后 前言 说明…

使用mpl_finance画股票K线图

使用mpl_finance画股票K线图 前言正文 前言 今天给大家介绍一下如何利用 python 中的 mpl_finance 模块画股票K线图。 该模块在 matplotlib 2.0之前是叫做 matplotlib.finance 但此之后是叫做 mpl_finance。 详细介绍请看https://matplotlib.org/api/finance_api.html 。具体用…

Python画图实战之画K线图【附带自动下载股票数据】

关于Python画图的基本知识可以先查看下面这篇文章Python画图&#xff08;直方图、多张子图、二维图形、三维图形以及图中图&#xff09;https://blog.csdn.net/weixin_41896770/article/details/119798960 对于股民来说&#xff0c;K线图是最常见的一种参考&#xff0c;使用Pyt…

一步一步教你写股票走势图——K线图二(图表联动)

目录 一步一步教你写股票走势图——分时图一&#xff08;概述&#xff09; 一步一步教你写股票走势图——分时图二&#xff08;自定义xy轴&#xff09; 一步一步教你写股票走势图——分时图三&#xff08;对齐图表、自定义柱状图高亮&#xff09; 一步一步教你写股票走势图…

如何对走势图进行画线分析

现货黄金投资入门与技巧&#xff0c;如何都绕不开这个问题&#xff0c;那就是画线分析。画线分析是技术分析一个重要的流派&#xff0c;也是我们分析市场必不可少的手段&#xff0c;掌握画线的方法&#xff0c;对我们掌握现货黄金投资入门与技巧有很大的帮助。 一、支撑线和压力…

使用Python绘制精美绝伦的股票行情K线图

PythonPyQt2.74 本文简单介绍了如何从Tushare获取某支股票的价格数据&#xff0c;并根据价格数据画出相应的日K线图。 # -*- coding: utf-8 -*-import sys import talib import numpy as np import pandas as pd import tushare as ts import datetime as dt import pyqtgraph …

缠论 公式 自动画线 画笔 中枢 买卖点 源代码

显示效果 跨级别区间套演示 板块演示 个股演示 期货演示 源码如下&#xff1a; {三角形中枢}时间:4;A:HHHV(H,时间*5) AND HHV(H,时间*5)>REF(HHV(H,时间*5),1);B:LLLV(L,时间*5) AND LLV(L,时间*5)<REF(LLV(L,时间*5),1);CC1:DRAWLINE(A,H,B,L,0);CC2:DRAWLINE(B,L,A,H…

利用 python numpy +matplotlib 绘制股票k线图

一、python numpy matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from matplotlib import pyplot as plt from matplotlib import animationfig plt.figure(figsize(8,6), dpi72,facecolor"white") axes plt.subplot(1…

一步一步教你写股票走势图——K线图三(添加均线)

目录 一步一步教你写股票走势图——分时图一&#xff08;概述&#xff09; 一步一步教你写股票走势图——分时图二&#xff08;自定义xy轴&#xff09; 一步一步教你写股票走势图——分时图三&#xff08;对齐图表、自定义柱状图高亮&#xff09; 一步一步教你写股票走势图…

[逐笔数据分析工具分享]如何分析股票逐笔数据

工具分享链接&#xff1a;https://pan.baidu.com/s/1fbDoPM2NzSBEn31gDBZnpQ 提取码&#xff1a;v0sm ​1. 配置stocklist.txt和datelist.txt stocklist为要分析的股票号码&#xff0c;可为任意个 datelist为要分析的日期&#xff0c;可为任意个 以上都为空时&#xff0c;则…

【K线绘图】教你用python绘制带有买卖点的股票K线图(附送鳄鱼指标、顾比均线指标、dataframe格式化输出)

提示&#xff1a;文章内买卖点不构成交易依据&#xff0c;请根据情况自行决策。 教你用python绘制带有买卖点的股票K线图&#xff08;附带鳄鱼指标、顾比均线指标、dataframe格式化输出&#xff09; 前言一、自己绘图&#xff0c;是不是疯了&#xff1f;二、分步说明1. 准备工作…

股票K线图绘制

股票K线图绘制 文章目录 股票K线图绘制前言一、股票K线图基础知识二、用Python绘制股票K线图总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都…

屏幕画笔工具Pointofix,期货/股票复盘分析画线好工具

工具介绍&#xff1a; Pointofix可以将K线图表定格在屏幕某一个画面上&#xff0c;然后可以使用工具趋势线、图形&#xff0c;放大某个细节等&#xff0c;是一款很好的复盘分析画线工具。 Pointofix使用功能&#xff1a; 1.高亮屏幕&#xff1a;手绘笔&#xff1b; 2.直线&…

解决一个信号6问题(sig6,signal6,SIGABRT,double free or corruption (!prev))

我遇到的信号6 99%都是由于数据越界导致&#xff0c;在memcpy的时候没有错误&#xff0c;在free的时候系统报SIGABRT。今天也不例外。代码是我写的&#xff0c;考虑不周&#xff0c;以后拷贝更多加小心。 上图中的data大小为1024&#xff0c;如果memcpy 1025各字节&#xff0c;…