基本概念

本文探讨了数据结构在计算机科学中的核心作用,如书架与整数打印的例子展示其在实际问题中的应用。讲解了数据结构的定义、ADT抽象数据类型,以及算法的定义和性能评估指标。重点关注时间复杂度和空间复杂度,以及如何通过优化数据结构提升算法效率。

基本概念

1.定义

  • 数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。
  • 数据结构是ADT(Abstract Data Type)抽象数据类型的物理实现。
  • 数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。

2.例子

  1. 书架放书

    主要考虑新书插入书籍查找问题

    随便放 利于插入 不利于查找

    顺序放 利于查找 不利于插入

  2. 整数1-N打印

    循环实现递归实现

    循环实现对空间要求小,递归实现对栈的压力大,当问题规模变大,程序会出现异常。

  3. 多项式求值

    循环实现

    提取公因数实现

解决问题方法的效率,跟数据的组织方式有关

解决问题方法的效率,跟空间的利用效率有关

解决问题方法的效率,跟算法的巧妙程度有关

3.数据结构

3.1定义

数据对象在计算机中的组织方式,分为物理结构逻辑结构,数据对象必定与一系列加在其上的操作相关联,完成这些操作所用的方法就是算法

3.2ADT抽象数据类型

  • 数据类型: 数据对象集以及在这个数据集合上的相关操作集
  • 抽象: 描述数据类型的方法,不依赖于具体实现

抽象与硬件(机器、操作系统、存储介质)、软件(算法、编程语言)无法

只关心 “是什么” 不关心 “怎么做”

抽象可以提高代码的通用性,减少重复代码

4.算法

算法(Algorithm)就是解决问题的方法

4.1定义

  • 一个有限指令集
  • 接受输入(有些情况不需要输入)
  • 产生输出
  • 一定有限步骤之后终止
  • 每一条指令集必须
    • 有充分明确的目标,不可以有歧义
    • 计算机能处理范围之内
    • 描述应该不依赖于任何一种计算机语言及具体实现手段

4.2指标

如何评判一个算法的性能,通过时间复杂度和空间复杂度来评判

1.空间复杂度

根据算法编写的程序在执行的时候占用存储单元的长度S(n),由于现在计算机的存储空间都比较大,因此对于空间复杂度主要考虑递归程序,并且有很多算法都是使用空间换时间

2.时间复杂度

根据算法编写的程序在执行时所耗费的时间的长度T(n),程序的实际运行时间容易受到其它因素(计算机的配置、操作系统、编程语言)的影响,因此一般会将程序中语句执行的次数作为程序的时间复杂度

n 代表问题的规模

分析算法的效率,一般关注如下两种时间复杂度

  • 最坏时间复杂度 T worst(n)
  • 平均时间复杂度 T avg(n)
    在这里插入图片描述

当一个程序的时间复杂度为n^2时,第一反应就是能不能将复杂度下降到nlogn

Python 中集成 Ollama 可以通过使用 `ollama` 官方提供的 Python 客户端库来实现。Ollama 是一个本地运行的大型语言模型(LLM)工具,它支持多种模型,如 Llama 2、Mistral 等,并且可以通过简单的 APIPython 应用程序集成。 ### 安装 Ollama Python 库 首先,需要确保你已经在本地系统上安装了 Ollama。你可以从 [Ollama 官方网站](https://ollama.com/)下载并安装适用于你操作系统的版本。 接下来,安装 Python 客户端库。Ollama 提供了一个官方的 Python 包,可以通过 `pip` 安装: ```bash pip install ollama ``` ### 使用 Ollama Python 库 安装完成后,可以使用 `ollama` 模块来调用 OllamaAPI。以下是一个简单的示例,展示如何使用 Ollama 的 `generate` 方法来生成文本: ```python import ollama # 生成文本 response = ollama.generate(model='llama3', prompt='为什么天空是蓝色的?') # 打印响应 print(response['response']) ``` 在这个例子中,`model` 参数指定了要使用的模型(例如 `llama3`),`prompt` 参数是用户输入的提示词。Ollama 会根据提示词生成相应的文本,并返回一个包含 `response` 字段的字典。 ### 获取模型列表 如果你想查看当前可用的模型,可以使用以下代码: ```python import ollama # 获取模型列表 models = ollama.list() # 打印模型列表 for model in models['models']: print(model['name']) ``` ### 模型对话(Chat) Ollama 还支持更复杂的对话模式,允许你在多轮对话中保持上下文。以下是一个使用 `chat` 方法的示例: ```python import ollama # 开始对话 response = ollama.chat( model='llama3', messages=[ {'role': 'user', 'content': '你好,你能帮我做什么?'}, {'role': 'assistant', 'content': '你好!我可以帮助你回答问题、提供建议,甚至进行简单的创作。有什么我可以帮你的吗?'}, {'role': 'user', 'content': '你能告诉我关于机器学习的基础知识吗?'} ] ) # 打印响应 print(response['message']['content']) ``` 在这个例子中,`messages` 参数是一个包含多个对话记录的列表,每个记录都有一个 `role` 和 `content` 字段。Ollama 会根据这些对话记录生成相应的回复。 ### 错误处理 在实际应用中,建议添加错误处理逻辑,以应对可能出现的网络问题或模型加载失败等情况: ```python import ollama try: response = ollama.generate(model='llama3', prompt='为什么天空是蓝色的?') print(response['response']) except Exception as e: print(f"发生错误: {e}") ``` ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宇0926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值