Suggesting new, easier system features by detecting user action sequences

The computing device processor suggests more efficient action sequences by comparing user actions with a cluster database, improving user experience and resource efficiency.

JP2025531656APending Publication Date: 2025-09-25QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025506030
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-08-08
Filing Date
2023-05-24
Publication Date
2025-09-25

AI Technical Summary

Technical Problem

Users of complex computing devices often perform inefficient and time-consuming tasks due to unawareness of advanced, simplified features, leading to degraded user experience and wastage of computing resources.

Method used

A computing device processor recognizes user action sequences, determines a difficulty rating, and suggests more efficient alternatives by comparing with a cluster database of system action sequences, updating the database with user preferences.

Benefits of technology

Enhances user experience by suggesting easier and faster action sequences, conserving computational resources and extending battery life.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025531656000001_ABST
    Figure 2025531656000001_ABST
Patent Text Reader

Abstract

An embodiment includes a method executed by a processor of a computing device for suggesting more efficient action sequences to a user. The method may include recognizing a user action sequence including one or more user actions performed by a user to achieve a result, determining a first difficulty rating for the user action sequence, and determining whether a cluster of a plurality of system action sequences exists in a cluster database in which each system action sequence of the one or more system action sequences produces the result. In response to determining that the cluster of the plurality of system action sequences exists in the cluster database, the method may further include comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences and displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Related Applications

[0001] This application claims the benefit of priority from U.S. Non-Provisional Patent Application No. 17 / 818,064, filed August 8, 202, the entire contents of which are incorporated herein by reference. [Background technology]

[0002]

[0002] User equipment and consumer devices are becoming increasingly complex, offering advanced and increasing numbers of features that can be implemented by users to perform various operations. In many cases, these more complex and intelligent features are not utilized by operating users, and instead, users may perform tasks through outdated, less efficient, and / or more time-consuming steps. Thus, users who are unaware of more advanced, simplified, or efficient features that can be implemented on their devices may waste time and computing resources by performing less efficient processes to achieve the same results. Furthermore, users may be performing difficult tasks to achieve results that could otherwise be obtained using less difficult processes, thus degrading the user experience. Summary of the Invention

[0003]

[0003] Various aspects include a method executed by a processor of a computing device for suggesting more efficient action sequences to a user. The various aspect methods may include recognizing a user action sequence including one or more user actions performed by a user to achieve a result, determining a first difficulty rating for the user action sequence, determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences generating a result, comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences in response to determining that the cluster of the plurality of system action sequences exists in the cluster database, and displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating.

[0004] Some aspects may further include, in response to determining that a cluster of the plurality of system action sequences that produces the result does not exist in the cluster database, generating a new cluster including the user action sequence. Some aspects may further include, in response to determining that a cluster of the plurality of system action sequences exists in the cluster database, determining whether a system action sequence of the one or more system action sequences may include one or more user actions of the user action sequence, and, in response to determining that a system action sequence of the one or more system action sequences does not include one or more user actions of the user action sequence, updating the cluster database with the user action sequence.

[0005]

[0005] In some aspects, comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences may include determining whether the user action sequence has fewer actions than the one or more system action sequences, and displaying via a display interface of the computing device one or more system action sequences having a difficulty rating lower than the first difficulty rating may include displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence has fewer actions than the one or more system action sequences.

[0006]

[0006] In some aspects, comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences may include determining whether the user action sequence executes slower than the time to execute any of the one or more system action sequences, and displaying via a display interface of the computing device one or more system action sequences having a difficulty rating lower than the first difficulty rating may include displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence executes slower than the time to execute any of the one or more system action sequences.

[0007]

[0007] Some aspects may further include determining whether the user action sequence has been performed a threshold number of times, and in response to determining that the user action sequence has been performed the threshold number of times, comparing the first difficulty rating with one or more difficulty ratings of one or more system action sequences is performed.

[0008]

[0008] Some aspects may further include receiving a user selection indicating that a user action sequence is preferred by the user over one or more displayed system action sequences having a lower difficulty rating, and updating the cluster database by storing the user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences.

[0009] In some aspects, updating the cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences may include changing the first difficulty rating to a lower difficulty rating. In some aspects, updating the cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences may include changing one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating. In some aspects, the user action sequence may include context and environment information associated with each of the one or more user actions.

[0010]

[0010] Further aspects include a computing device having a processor configured to perform one or more operations of any of the methods summarized above. Further aspects include a computing device having means for performing the functions of any of the methods summarized above. Further aspects include a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform the operations of any of the methods summarized above. [Brief explanation of the drawings]

[0011]

[0011] The accompanying drawings, which are incorporated into and constitute a part of this specification, illustrate exemplary embodiments of the claims and, together with the provided general description and "Form for Implementing the Invention," serve to explain features herein. [Figure 1]

[0012] FIG. 1 is a component block diagram illustrating an exemplary computing device suitable for implementing any of the various embodiments. [Figure 2]

[0013] FIG. 1 is a component block diagram illustrating a software architecture including radio protocol stacks for user and control planes in wireless communications suitable for implementing any of the various embodiments. [Figure 3]

[0014] FIG. 1 is a component block diagram illustrating an exemplary system configured to suggest to a user more efficient sequences of actions for achieving a result, according to some embodiments. [Figure 4]

[0015] FIG. 1 is a block diagram illustrating an exemplary data structure for suggesting to a user of a computing device a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 5]

[0016] FIG. 1 is a block diagram illustrating an exemplary updated data structure for suggesting to a user of a computing device a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 6]

[0017] FIG. 1 is a process flow diagram of a method for suggesting to a user of a computing device a more efficient sequence of actions for achieving a result, according to some embodiments. [Figure 7A]

[0018] FIG. 1 is a process flow diagram of an exemplary method that may be executed by a processor of a computing device to suggest to a user a more efficient sequence of actions for achieving a result, according to various embodiments. [Figure 7B]

[0019] FIG. 8 is a process flow diagram of example operations that may be performed as part of the method shown in FIG. 7, described to suggest to a user a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 7C]FIG. 8 is a process flow diagram of example operations that may be performed as part of the method shown in FIG. 7, described to suggest to a user a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 7D] FIG. 8 is a process flow diagram of example operations that may be performed as part of the method shown in FIG. 7, described to suggest to a user a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 7E] FIG. 8 is a process flow diagram of example operations that may be performed as part of the method shown in FIG. 7, described to suggest to a user a more efficient sequence of actions to achieve a result, according to some embodiments. [Figure 8]

[0020] FIG. 1 is a component block diagram illustrating an exemplary computing device suitable for use with various embodiments. [Figure 9]

[0021] FIG. 1 is a component block diagram illustrating an exemplary server suitable for use with the various embodiments. [Figure 10]

[0022] FIG. 1 is a component block diagram illustrating an exemplary wireless communication device suitable for use with the various embodiments. [Figure 11]

[0023] FIG. 1 illustrates an exemplary wearable computing device in the form of a smartwatch, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0012]

[0024] Various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to specific examples and implementations are for illustrative purposes only and do not limit the scope of the claims.

[0013]

[0025] Many different user equipment (UEs) and consumer and / or commercial computing devices, such as smartphones, augmented / mixed reality (XR, AR, MR) devices, personal computers, home appliances (e.g., smart TVs, smart refrigerators, automatic vacuum systems, air conditioning control units), automobile dashboard interfaces, multimedia displays, sales operation and display interfaces (e.g., point of sale systems), or any other device with an interactive display interface and / or operable controls, may include a vast number of features that can be executed by a user to perform various tasks. Such features may enable a user to perform a task with fewer actions, in a shorter amount of time, and / or with an easier user experience compared to the set of actions a user typically takes to perform the same task. However, these features are often overlooked by users because the user may be unaware of or may forget about these features.

[0014]

[0026] Various embodiments include a method and a computing device processor for suggesting to a user a more efficient (i.e., simplified / fewer steps, less time, less user effort) and / or easier (i.e., in terms of user experience / Quality of Experience (QoE)) sequence of actions to achieve a particular result. Various embodiments include a processor of a computing device (e.g., a mobile phone, a wearable device, a consumer electronics user interface, etc.) configured to record a series of user actions or sequences taken by a user to perform a task. The computing device processor may be configured to determine whether a more efficient sequence of actions exists that the user can implement to achieve the same result as the user action. If so, the processor may present the more efficient sequence of actions to the user, thereby introducing or reminding the user of the more efficient sequence of actions that the user can next use to achieve the same result.

[0015]

[0027] The term "system-on-a-chip" (SoC) is used herein to refer to a single integrated circuit (IC) chip containing multiple resources and / or processors integrated on a single substrate. A single SoC may include circuitry for digital functions, analog functions, mixed-signal functions, and radio frequency functions. A single SoC may also include any number of general-purpose and / or special-purpose processors (such as digital signal processors, modem processors, video processors, etc.), memory blocks (e.g., ROM, RAM, flash, etc.), and resources (e.g., timers, voltage regulators, oscillators, etc.). The SoC may also include software for controlling peripheral devices as well as for controlling the integrated resources and processors.

[0016]

[0028] The term "system-in-a-package" (SIP) may be used herein to refer to a single module or package containing multiple resources, computing units, cores, and / or processors on two or more IC chips, substrates, or SoCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, a SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged on a singulated substrate. A SIP may also include multiple independent SoCs packaged in close proximity and coupled to each other via high-speed communication circuits, such as on a single motherboard or within a single computing device. The proximity of the SoCs facilitates high-speed communication and memory and resource sharing.

[0017]

[0029] As used herein, the terms “network,” “system,” “wireless network,” “cellular network,” and “wireless communications network” may interchangeably refer to some or all of a wireless network of a carrier associated with a computing device and / or a subscription on the computing device. The techniques described herein may be used for various wireless communications networks, such as code division multiple access (CDMA), time division multiple access (TDMA), FDMA, orthogonal FDMA (OFDMA), single-carrier FDMA (SC-FDMA), and other networks. Generally, any number of wireless networks may be deployed in a given geographic area. Each wireless network may support at least one radio access technology, which may operate on one or more frequencies or ranges of frequencies. For example, a CDMA network may implement Universal Terrestrial Radio Access (UTRA) (including the Wideband Code Division Multiple Access (WCDMA) standard), CDMA2000 (including the IS-2000, IS-95, and / or IS-856 standards), etc. In another example, a TDMA network may implement GSM Enhanced Data Rates for GSM Evolution (EDGE). In another example, an OFDMA network may implement Evolved UTRA (E-UTRA), IEEE 802.11 (WiFi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM, etc. Wireless networks using the Long Term Evolution (LTE) standard may be referenced, and thus the terms "Universal Terrestrial Radio Access," "E-UTRAN," and "eNodeB" may also be used interchangeably herein to refer to wireless networks. However, such references are provided by way of example only and do not exclude wireless networks using other communication standards.For example, although various third-generation (3G), fourth-generation (4G), and fifth-generation (5G) systems are described herein, these systems are mentioned by way of example only, and future generation systems (e.g., sixth-generation (6G) or higher systems) may be used instead in various embodiments.

[0018]

[0030] In recent years, with the rapid development and advancement of technology, computing devices may include several functions and intelligent features. It may be difficult for users to recognize and utilize one or more of these advanced features, especially features that are useful and effective at specific, most beneficial moments during the operation of the computing device. For example, users may only know or be able to use basic functions / features available on previous models or operating systems of the computing device and may be able to perform tasks on the computing device using well-known methods. Because many commercial consumers find it difficult or tedious to read a system manual, let alone memorize all the functions documented therein, users may be unaware of more efficient functions and / or functions that are easier to use. Users may also encounter difficulties in invoking more efficient intelligent functions at the precise moment during the operation of the computing device, resulting in users attempting to perform time-sensitive tasks. While performing some tasks may be complicated or frustrating for users (e.g., thumbprint verification when both hands are full), users may not realize that the same task can be performed using some other method (e.g., iris verification, etc.). Thus, the user may have a negative user experience when other available interaction sequences unknown to the user may have produced the same result and provided the user with a positive experience.

[0019]

[0031] Various embodiments may provide the user with recommended or suggested action sequences as alternatives to achieving the same result as an action sequence recently or simultaneously performed by the user. The suggested action sequence may inform the user of a more efficient (i.e., less time-consuming, fewer actions, easier to perform) action or action sequence the user can implement to achieve a desired result. For example, a user may be unaware that facial recognition software used to unlock a mobile device can unlock the device through iris recognition or the like while the user is wearing a protective mask, and the user may remove the mask each time they attempt to unlock the device. After recognizing that the user has removed the mask to unlock the phone, the mobile device may provide the user with a message informing the user that the mask may not need to be removed and / or that the mobile device can be unlocked via placing a smartwatch in proximity to the mobile device. As another example, a user may manually set the dark theme / power saving / low light mode on or off on their computing device throughout the day, such as turning on the dark theme at night and turning it off again in the morning. The computing device may detect this user pattern and suggest new features, such as presenting the user with a series of actions (i.e., through a tutorial or list of steps) to configure the computing device to automatically schedule a dark theme based on sunset and / or sunrise times.

[0020]

[0032] Various embodiments include methods and devices for providing a user with more efficient and / or easier to perform action sequences to achieve the same result compared to action sequences the user has performed or repeatedly performed. By informing the user of available advanced features, computational resources may be conserved, battery life may be extended, and the user experience may be increased when the user chooses to perform the suggested action sequence instead of a previously used, inefficient action sequence(s).

[0021]

[0033] Various embodiments include a method executed by a processor of a computing device for suggesting to a user more efficient action sequences to achieve the same or similar result. Various embodiments may include monitoring user interaction with the computing device to recognize when a user action sequence including one or more user actions is performed by the user to achieve the result, determining a first difficulty rating for the user action sequence, and determining whether a cluster of multiple system action sequences exists in a cluster database, each action sequence of the multiple alternative user action sequences producing the result. In response to determining that a cluster of multiple alternative system action sequences exists in the cluster database that produce the same result, the method may further include comparing the first difficulty rating with one or more difficulty ratings for each of the multiple alternative user action sequences, and displaying, via a display interface of the computing device, the one or more alternative system action sequences having a difficulty rating lower than the first difficulty rating.

[0022]

[0034] 1 is a component block diagram illustrating an exemplary computing device 100 suitable for implementing any of the various embodiments. The various embodiments may be implemented on a number of single-processor and multi-processor computer systems, including systems-on-chips (SoCs) or systems-in-packages.

[0023]

[0035] Referring to FIG. 1 , the illustrated exemplary computing device 100 (which may be a system member package in some embodiments) includes two SoCs 202, 204 coupled to a clock 206, a voltage regulator 208, at least one subscriber identity module (SIM) 268 and / or SIM interface, and a wireless transceiver 266 configured to transmit and receive wireless communications via an antenna (not shown) to and from a network computing device, such as a base station. In some embodiments, the first SoC 202 operates as the computing device's central processing unit (CPU), implementing instructions of a software application program by performing arithmetic, logic, control, and input / output (I / O) operations specified by the instructions. In some embodiments, the second SoC 204 may operate as a dedicated processing unit. For example, the second SoC 204 may operate as a dedicated 5G processing unit responsible for managing high-capacity, high-speed (e.g., 5 Gbps, etc.), and / or very short-wavelength (e.g., 28 GHz mmWave spectrum, etc.) communications.

[0024]

[0036] The first SoC 202 may include a digital signal processor (DSP) 210, a modem processor 212, a graphics processor 214, an application processor (AP) 216, one or more coprocessors 218 (e.g., vector coprocessors) connected to one or more of the processors, memory 220, custom circuitry 222, system components and resources 224, an interconnect / bus module 226, one or more temperature sensors 230 (e.g., accelerometers, temperature sensors, pressure sensors, optical sensors, infrared sensors, analog audio sensors, etc.), a thermal management unit 232, and a thermal power envelope (TPE) component 234. The second SoC 204 may include a 5G modem processor 252, a power management unit 254, an interconnect / bus module 264, multiple mmWave transceivers 256, memory 258, and various additional processors 260, such as application processors, packet processors, etc.

[0025]

[0037] Each processor 210, 212, 214, 216, 218, 252, 260 may include one or more cores, and each processor / core may perform operations independent of the other processors / cores. For example, the first SoC 302 may include a processor that runs a first type of operating system (e.g., FreeBSD, LINUX, OS X, etc.) and a processor that runs a second type of operating system (e.g., MICROSOFT WINDOWS 10). Additionally, any or all of the processors 210, 212, 214, 216, 218, 252, 260 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc.).

[0026]

[0038] The first SoC 202 and the second SoC 204 may include various system components, resources, and custom circuits for managing sensor data, analog-to-digital conversion, wireless data transmission, and performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser. For example, the system components and resources 224 of the first SoC 202 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, access ports, timers, and other similar components used to support processors and software clients running on the computing device. The system components and resources 224 and / or custom circuits 222 may also include circuitry for interfacing with peripheral devices, such as cameras, electronic displays, wireless communication devices, external memory chips, etc.

[0027]

[0039] The first SoC 202 and the second SoC 204 may communicate via an interconnect / bus module 250. The various processors 210, 212, 214, 216, 218 may be interconnected to one or more memory elements 220, system components and resources 224, and custom circuitry 222, as well as a thermal management unit 232, via an interconnect / bus module 226. Similarly, the processor 252 may be interconnected to a power management unit 254, an mmWave transceiver 256, memory 258, and various additional processors 260 via an interconnect / bus module 264. The interconnect / bus modules 226, 250, 264 may include arrays of reconfigurable logic gates and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc.). Communication may occur through an advanced interconnect, such as a high-performance network-on-chip (NoC).

[0028]

[0040] The first SoC 202 and / or the second SoC 204 may further include input / output modules (not shown) for communicating with resources external to the SoC, such as a clock 206, a voltage regulator 208, one or more wireless transceivers 266, and at least one SIM 268 and / or SIM interface (i.e., an interface for receiving one or more SIM cards). Resources external to the SoC (e.g., the clock 206, the voltage regulator 208) may be shared by two or more of the internal SoC processors / cores. The at least one SIM 268 (or one or more SIM cards coupled to one or more SIM interfaces) may store information supporting multiple subscriptions, including a first 5G NR subscription and a second 5G NR subscription, etc.

[0029]

[0041] Various embodiments may be implemented in a wide variety of computing systems in addition to the exemplary computing device 100 described above, and a computing system may include a single processor, multiple processors, a multi-core processor, or any combination thereof.

[0030]

[0042] FIG. 2 is a component block diagram illustrating a software architecture 300 including radio protocol stacks for user and control planes in wireless communications, suitable for implementing any of the various embodiments. Referring to FIGS. 1-2 , a computing device 320 may implement software architecture 200 to facilitate communications between the computing device 320 (e.g., computing device 100) and a base station 350 of a telephony communication system. In some embodiments, layers in software architecture 200 may form logical connections with corresponding layers in the software of base station 350. Software architecture 200 may be distributed among one or more processors (e.g., processors 212, 214, 216, 218, 252, 260). While illustrated with respect to one radio protocol stack in a multi-SIM (Subscriber Identity Module) computing device, software architecture 200 may include multiple protocol stacks, each associated with a different SIM (e.g., two protocol stacks associated with two SIMs in a dual-SIM wireless communication device). Although described below with respect to LTE communication layers, software architecture 200 may support any of a variety of standards and protocols for wireless communication and / or may include additional protocol stacks that support any of a variety of standards and protocols for wireless communication.

[0031]

[0043] Software architecture 200 may include a non-access stratum (NAS) 302 and an access stratum (AS) 304. NAS 302 may include functions and protocols for packet filtering, security management, mobility control, session management, and supporting traffic and signaling between a computing device's SIM(s) and its core network. AS 304 may include functions and protocols supporting communication between SIM(s) and supported access network entities (e.g., base stations). Specifically, AS 304 may include at least three layers (Layer 1, Layer 2, and Layer 3), each of which may include various sublayers.

[0032]

[0044] In the user and control plane, Layer 1 (L1) of the AS 304 may be a physical layer (PHY) 306, which may oversee functions that enable transmission and / or reception over the air interface. Examples of such physical layer 306 functions may include cyclic redundancy check (CRC) attachment, coding blocks, scrambling and descrambling, modulation and demodulation, signal measurement, MIMO, etc. The PHY layer 306 may include various logical channels, including a physical downlink control channel (PDCCH) and a physical downlink shared channel (PDSCH). As an example, the PHY layer 306 may support channel state information (CSI) measurement and reporting (e.g., channel quality indicator (CQI) measurement and reporting).

[0033]

[0045] In the user and control plane, Layer 2 (L2) of the AS 304 may carry the link between the computing device 320 and the base station 350 on the physical layer 306. In various embodiments, Layer 2 may include a medium access control (MAC) sublayer 308, a radio link control (RLC) sublayer 310, and a packet data convergence protocol (PDCP) sublayer 312, each of which forms a logical connection that terminates at the base station 350.

[0034]

[0046] In the control plane, Layer 3 (L3) of AS 304 may include a radio resource control (RRC) sublayer 3. Although not shown, software architecture 200 may include additional Layer 3 sublayers, as well as various upper layers above Layer 3. In various embodiments, RRC sublayer 313 may provide functions including broadcasting system information, paging, and establishing and releasing RRC signaling connections between computing device 320 and base station 350.

[0035]

[0047] In various embodiments, the PDCP sublayer 312 may provide uplink functions including multiplexing between various radio bearers and logical channels, sequence number addition, handover data processing, integrity protection, ciphering, and header compression. In the downlink, the PDCP sublayer 312 may provide functions including in-order delivery of data packets, duplicate data packet detection, integrity verification, decryption, and header recovery.

[0036]

[0048] In the uplink, the RLC sublayer 310 may provide segmentation and concatenation of upper layer data packets, retransmission of lost data packets, and automatic repeat request (ARQ). In the downlink, the RLC sublayer 310 functions may include reordering of data packets to compensate for out-of-order reception, reassembly of upper layer data packets, and ARQ.

[0037]

[0049] In the uplink, the MAC sublayer 308 may provide functions including multiplexing between logical and transport channels, random access procedures, logical channel priorities, and Hybrid ARQ (HARQ) operations. In the downlink, MAC layer functions may include channel mapping within a cell, demultiplexing, discontinuous reception (DRX), and HARQ operations.

[0038]

[0050] While software architecture 200 may provide functionality for transmitting data over a physical medium, software architecture 200 may further include at least one host layer 314 for providing data transfer services to various applications in computing device 320. In some embodiments, the application-specific functionality provided by at least one host layer 314 may provide an interface between the software architecture and a general-purpose processor.

[0039]

[0051] In other embodiments, software architecture 200 may include one or more upper logical layers (e.g., transport, session, presentation, application, etc.) that provide host layer functionality. In some embodiments, software architecture 200 may include an application layer where logical connections terminate at another device (e.g., an end-user device, a server, etc.). In some embodiments, software architecture 200 may further include a hardware interface 316 between physical layer 306 and communications hardware (e.g., one or more radio frequency (RF) transceivers) within AS 304.

[0040]

[0052] FIG. 3 is a component block diagram illustrating an exemplary system 300 configured to suggest to a user a more efficient sequence of actions for achieving a result, according to some embodiments. With reference to FIGS. 1-3 , the system 300 may include one or more computing devices 402 (e.g., computing devices 200, 320) and external resources 418 (e.g., AR glasses, AR servers) that may communicate over a wireless communications network 424. The external resources 418 may include sources of information outside of the system 300, external entities participating in the system 300, or other resources. In some implementations, some or all of the functionality attributed herein to the external resources 418 may be provided by resources included within the system 300. The system 300 may include multiple hardware, software, and / or firmware components that work together to provide the functionality attributed herein to the processor 422.

[0041]

[0053] The computing device 402 may include electronic storage 420 that may be configured to store information related to the functions implemented by the transceiver module 430, the interface display module 432, the action monitoring module 434, the context information module 436, the level determination / difficulty rating module 438, the cluster / sequence comparison module 440, the cluster generation / update module 442, and any other instruction modules.

[0042]

[0054] Electronic storage 420 may include non-transitory storage media that electronically store information. Electronic storage 420 may include one or both of system storage that is integral with system 300 (i.e., substantially non-removable) and / or removable storage that is removably connectable to system 300, for example, via a port (e.g., a Universal Serial Bus (USB) port, a Firewire port, etc.) or a drive (e.g., a disk drive, etc.). In various embodiments, electronic storage 420 may include one or more of a charge-based storage medium (e.g., EEPROM, RAM, etc.), a solid-state storage medium (e.g., a flash drive, etc.), an optically readable storage medium (e.g., an optical disk, etc.), a magnetically readable storage medium (e.g., a magnetic tape, a magnetic hard drive, a floppy drive, etc.), and / or other electronically readable storage media. Electronic storage 420 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and / or other virtual storage resources). The electronic storage device 420 may store software algorithms, information determined by the processor(s) 422, and / or other information that enables the system 200 to function as described herein.

[0043]

[0055] The computing device(s) 402 may be configured with machine-readable instructions 406. The machine-readable instructions 406 may include one or more instruction modules. The instruction modules may include computer program modules. The instruction modules may include one or more of a transceiver module 430, an interface display module 432, an action monitoring module 434, a context information module 436, a level determination / difficulty rating module 438, a cluster / sequence comparison module 440, a cluster generation / update module 442, and other instruction modules (not shown). The computing device 402 may include a processor 422 configured to implement the machine-readable instructions 406 and corresponding modules.

[0044]

[0056] The processor(s) 422 may include one or more local processors that may be configured to provide information processing capabilities in the system 300. Thus, the processor(s) 422 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information. Although the processor(s) 422 are shown in FIG. 3 as a single entity, this is for illustrative purposes only. In some embodiments, the processor(s) 422 may include multiple processing units. These processing units may be physically located within the same device, or the processor(s) 422 may represent the processing functions of multiple devices distributed within the system 300.

[0045]

[0057] In some embodiments, the processor 422 executing the transceiving module 430 may be configured to transmit and receive information to and from the external resource 418 via the communication link 424 .

[0046]

[0058] In some embodiments, the processor 422 executing the interface display module 432 may be configured to display the more efficient action sequence to the user via the display interface. In some embodiments, the processor 422 executing the interface display module 432 may be configured to receive an input selection from the user via the display interface. In some embodiments, the processor 422 executing the interface display module 432 may be configured to display one or more alternative system action sequences having a difficulty rating lower than the first difficulty rating via the display interface of the computing device. In some embodiments, the processor 422 executing the interface display module 432 may be configured to display one or more alternative system action sequences having a difficulty rating lower than the first difficulty rating via the display interface of the computing device in response to determining that the user action sequence requires more action or interaction than the alternative one or more system action sequences. In some embodiments, the processor(s) 422 executing the interface display module 432 may be configured to display, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence takes longer to execute or complete than the time to execute any of the one or more system action sequences. In some embodiments, the processor 422 executing the interface display module 432 may be configured to receive a user selection indicating that the user action sequence is preferred by the user over the displayed one or more system action sequences having a lower difficulty rating.

[0047]

[0059] In some embodiments, the processor 422 executing the action monitoring module 434 may be configured to monitor user interactions with the computing device to recognize when a user action sequence including one or more user actions is performed by the user to achieve a particular result, such as accessing a file, starting a particular application, dialing a phone number, taking a photo, etc. In some embodiments, the processor 422 executing the action monitoring module 434 may be configured to determine whether the user action sequence has been performed a threshold number of times, and comparing the first difficulty rating to one or more difficulty ratings of clusters of multiple alternative system action sequences that produce the same result in the cluster database may be performed in response to determining that the user action sequence has been performed the threshold number of times.

[0048]

[0060] In some embodiments, the processor 422 executing the context information module 436 may be configured to analyze, measure, or otherwise determine context information including time and environmental information for each action in a user action sequence.

[0049]

[0061] In some embodiments, the processor 422 executing the level determination / difficulty rating module 438 may be configured to determine a first difficulty rating for a sequence of user actions.

[0050]

[0062] In some embodiments, the processor 422 executing the cluster / sequence comparison module 440 may be configured to compare the first difficulty rating to one or more difficulty ratings of the cluster of multiple alternative system action sequences that produce the same result in the cluster database in response to determining that a cluster of multiple alternative system action sequences exists in the cluster database. In some embodiments, the processor 422 executing the cluster / sequence comparison module 440 may be configured to determine whether the user action sequence has fewer actions than one or more system action sequences. In some embodiments, the processor(s) 422 executing the cluster / sequence comparison module 440 may be configured to determine whether the user action sequence executes slower than the time to execute any of the one or more system action sequences. In some embodiments, the processor(s) 422 executing the cluster / sequence comparison module 440 may be configured to determine whether a cluster of multiple system action sequences exists in the cluster database in which each system action sequence of the multiple alternative user action sequences produces the same result. In some embodiments, the processor(s) 422 executing the cluster / sequence comparison module 440 may be configured to, in response to determining that a cluster of the plurality of system action sequences exists in the cluster database, determine whether a system action sequence of the plurality of alternative user action sequences includes one or more user actions of the user action sequence.

[0051]

[0063] In some embodiments, the processor(s) 422 executing the cluster generation / update module 442 may be configured to generate a new cluster including the user action sequence in response to determining that no cluster of the multiple system action sequences that produces a result exists in the cluster database. In some embodiments, the processor 422 executing the cluster generation / update module 442 may be configured to update the cluster of the multiple alternative system action sequences that produce the same result as the user action sequence in response to determining that a system action sequence of the multiple alternative user action sequences does not include one or more user actions of the user action sequence. In some embodiments, the processor 422 executing the cluster generation / update module 442 may be configured to update the cluster of the multiple alternative system action sequences that produce the same result to store user action sequences that have a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences. In some embodiments, the processor 422 executing the cluster generation / update module 442 may be configured to change the first difficulty rating to a lower difficulty rating. In some embodiments, the processor 422 executing the cluster generation / update module 442 may be configured to change one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating.

[0052]

[0064] The processor(s) 422 may execute modules 430-442 and / or other modules via software, hardware, firmware, any combination of software, hardware, and / or firmware, and / or other mechanisms for configuring processing power on the processor(s) 422.

[0053]

[0065] The description of the functionality provided by the various modules 430-442 is for purposes of illustration and is not intended to be limiting, as any of the modules 430-442 may provide more or less functionality than described. For example, one or more of the modules 430-442 may be excluded, with some or all of its functionality being provided by other of the modules 430-442. As another example, the processor(s) 422 may execute one or more additional modules that may perform some or all of the functionality attributed to one of the following modules 430-442:

[0054]

[0066] 4 is a block diagram illustrating an exemplary data structure for suggesting to a user of a computing device a more efficient sequence of actions to achieve a result, according to some embodiments. With reference to FIGS. 1-4, the data structure, which may be referred to as a cluster, may be stored in a database (e.g., memory 220, 258, electronic storage 420) of the computing device (e.g., 200, 320, 402) and / or in an external database (e.g., external resource 418) communicatively connected to the computing device.

[0055]

[0067] Each cluster may be associated with a particular result, and each cluster may have one or more action sequences including one or more actions "A" that can be performed to achieve the result. There may be any number N of clusters, each associated with a different result, and each cluster may have any number M of action sequences to achieve the result associated with each cluster. For example, Cluster 1 may have one or more action sequences that can be performed to achieve Result 1, Cluster 2 may have one or more action sequences that can be performed to achieve Result 2, and Cluster N may have one or more action sequences that can be performed to achieve Result N. Each system action sequence may include an action or series of actions that can be performed to achieve a result. For example, Cluster 1 may include Sequence 1, Sequence 2, and Sequence M, each including any number of different actions that can be performed sequentially by a user of a computing device to achieve Result 1. For example, Cluster 1 may include Sequence 1, Sequence 2, and Sequence M, each including at least one action that can be performed by a user to achieve Result 1, which is to unlock the phone. Sequence 1 may include an action such as entering a password, sequence 2 may include an action such as providing a user's thumbprint, and sequence M may include a first action of lifting the phone and a second action of shaking the phone to unlock it.

[0056]

[0068] The sequences within each cluster may be assigned or otherwise sorted in association with a difficulty rating. For example, cluster 1 may have sequence 1 with a high difficulty rating and sequence M with a relatively low difficulty rating, thus indicating that the actions of sequence 1 are less efficient for a user to perform than the actions of sequence M. Each action "A" within an action sequence may be associated with context information "C" that may be used to determine or otherwise indicate the difficulty rating of the action sequence.

[0057]

[0069] The context information may include any time information that may be associated with a particular action that may be performed by a user, including, but not limited to, (i) the time (e.g., a timestamp) at which the action is performed, (ii) the time between the current relevant action and the previous action in the action sequence, (iii) the time between the current relevant action and the next action in the action sequence, and (iv) the duration for performing the action.

[0058]

[0070] Contextual information may include (i) sensor information such as information measured by temperature sensors, humidity sensors, pressure sensors, infrared sensors, light sensors, sound sensors / microphones for voice recognition and other sound detection and conversion (i.e., analog-to-digital), user interface mechanisms such as touchpads and touchscreens (e.g., fingerprint identification, capacitance-based touch recognition); (ii) computing device speed, acceleration, and orientation information such as information measured and / or determined by accelerometers, and geopositioning via satellite tracking and base station and / or WiFi pinging or triangulation; (iii) optical information derived from cameras or camera sensors, including object and / or face recognition, iris / eye recognition, focal length, foreground and / or background distance, lighting and brightness levels, computing device stability, motion detection, and camera settings including camera zoom, video frame rate, aspect ratio, etc.; and (iv) It may further include any environmental information that may be associated with a particular action that may be performed by a user, including, but not limited to, (i) network connection information such as network type, network communication protocol, network uplink and downlink speeds, proximity to server / router / network device, network access permissions, and available networks; (ii) device connection information such as connected device, connected device communication protocol, and connected device signal strength; (iii) application information such as type of software application (e.g., photo editing application, internet browser application, mapping application), application version, and application user interface (e.g., selectable user inputs / buttons); and (iv) device information such as brand, model, and operating system type and version.

[0059]

[0071] The action sequences may further be assigned and / or indicate a difficulty rating for the action sequence. In some embodiments, the difficulty rating may be based on the number of steps included in each user action sequence, the complexity of the user action sequence, the contextual and / or environmental conditions under which each of the multiple alternative user action sequences is more or less difficult, and other measures of difficulty. For example, the difficulty rating may be based on the total estimated and / or average time to perform all actions in the action sequence and / or the total number of actions in the action sequence. For example, in cluster 2, sequence 1 may have more actions than sequence 2 and therefore may be given a higher difficulty rating than sequence 2. As another example, sequence 2 may have fewer actions than sequence M, but the actions in sequence M may be performed in less time than the actions in sequence 2. Therefore, sequence M may be given a lower difficulty rating than sequence 2. As a further example, sequence 1 may have fewer actions than sequence 2, but the actions in sequence 1 may be given a higher difficulty rating than the actions in sequence 2 based on contextual information of the actions in both action sequences (i.e., the actions in sequence 1 are more difficult for the user to perform).

[0060]

[0072] Additionally, the difficulty rating may take into account how each user action sequence may be affected by predictable operating or environmental conditions. For example, if the action sequence includes pressing a small icon on a touch-sensitive display, the difficulty rating may include a coefficient that is applied when an accelerometer in the computing device indicates that the device is experiencing motion and / or vibration (e.g., when the user is walking or in a moving vehicle) that may make it difficult to accurately touch the small icon. In such embodiments, the operating or environmental condition and the associated adjustment coefficient for the difficulty rating may be associated with a corresponding action sequence in a cluster of multiple alternative system action sequences that produce the same result stored in a cluster database.

[0061]

[0073] A difficulty rating may be any type of rating, level, ratio, percentage, or value that may be used to indicate that one sequence of actions may be easier and / or more efficient for a user to perform than another sequence of actions.

[0062]

[0074] FIG. 5 is a block diagram illustrating an exemplary updated data structure for suggesting to a user of a computing device a more efficient action sequence for achieving a result, according to some embodiments. With reference to FIGS. 1-5 , a user pattern history with a particular result may be used to update a cluster database with the same result, or may be used to determine a difficulty level for a user action sequence based on an equivalent action sequence within a cluster of multiple alternative system action sequences that produce the same result stored in the cluster database. For example, the user pattern history may include a sequence U performed by a user of a computing device to achieve result 1. Having monitored and recorded each action of sequence U and any associated context information, the computing device may search the cluster database to determine whether a cluster with result 1 exists. In this illustrative example, cluster 1 with result 1 may exist, but no action sequence with the same actions as sequence U may exist. Thus, cluster 1 may be updated to include a user pattern history that includes sequence U. The level determination may be performed by the computing device and / or a database storing cluster information to assign a difficulty level or rating to sequence U. Sequence U may then be stored as part of cluster 1 along with the determined difficulty level, and the computing device may provide the user, via the display interface, with an action sequence (e.g., sequence M) that may be easier or more efficient to perform than sequence U (i.e., after the user first performs sequence U and before the user attempts to perform sequence U again).

[0063]

[0075] Following the above example, the user may subsequently iteratively perform sequence U. Because cluster 1 has been updated with sequence U and the accompanying difficulty rating, the computing device and / or cluster database may not need to perform another level determination to determine a difficulty rating for sequence U. Instead, the computing device and / or cluster database may determine that sequence U is already stored in cluster 1, compare the difficulty rating of sequence U with other sequences in cluster 1, determine that an easier or more efficient action sequence M exists in cluster 1, and provide sequence M to the user as a recommended course of action for the user's next attempt to achieve outcome 1.

[0064]

[0076] In some embodiments where the actions of sequence U are already stored as a sequence in cluster 1 (e.g., as sequence 2), cluster 1 does not need to be updated with the user's pattern history. Instead, the computing device may determine that sequence U performed by the user is equivalent to sequence 2 and therefore has the difficulty rating already given to sequence 2, and may then offer sequence M to the user via the display interface as a more efficient option than sequence U that the user recently performed.

[0065]

[0077] In some embodiments, the difficulty rating of the user action sequence U may be updated to be the easiest or most efficient action sequence than the proposed action sequence, such that the user action sequence is updated to have a stored difficulty level lower than the stored difficulty level associated with the proposed action sequence. For example, the user action sequence may have a difficulty level of 5 (i.e., high, more difficult, less efficient) compared to the proposed action sequence having a difficulty level of 2 (i.e., lower, less difficult, more efficient). The user may select an input indicating a preference for the user action sequence despite being provided with a proposed action sequence having a lower difficulty rating, and the user action sequence may be updated and stored within a cluster of multiple alternative system action sequences that produce the same result in the cluster database, having a difficulty rating lower than the difficulty rating of the proposed action sequence (e.g., the user action sequence difficulty level is 1 and the proposed action sequence difficulty level is 2).

[0066]

[0078] In some embodiments, the difficulty level of a proposed action sequence may be updated to be more difficult if the user prefers the user action sequence to the proposed action sequence. For example, if the user selects an option to prefer sequence U, the proposed action sequence (e.g., sequence M) may be updated to have a higher difficulty rating than user action sequence U. Then, when the user repeatedly performs the user action sequence again, the next easiest action sequence in the cluster of multiple alternative system action sequences that produces the same result may be provided to the user. The user may still prefer the user action sequence to the second suggested action sequence, and the processor may continue to repeatedly provide the next most efficient action sequence in the cluster of multiple alternative system action sequences that produces the same result after each user action sequence is performed, until the user has been presented with all of the proposed action sequences in the cluster of multiple alternative system action sequences that produce the same result, which the user may continue to reject.

[0067]

[0079] In some embodiments in which the user selects an option indicating a preference for using the user action sequence over the proposed action sequence, other action sequences in the cluster of multiple alternative system action sequences that have not yet been suggested to the user and that produce the same result as the user action sequence but that are more efficient than the user action sequence but less efficient than the proposed action sequence may also be updated to have a higher difficulty rating than the user action sequence. Thus, after performing the user action sequence for the first time and selecting a preference for the user action sequence over the first proposed action sequence, the user may not be presented with additional suggested action sequences that are less efficient than the recommended action sequence originally provided to the user.

[0068]

[0080] In some embodiments, the cluster database may be updated with user action sequences from multiple other users. Thus, for example, even though a user has already selected an input indicating a preference for a user action sequence, upon subsequent and / or repeated performance of the user action sequence, the user may be presented with a new or recently added, more efficient or easier action sequence to a cluster of multiple alternative system action sequences that produce the same result based on the historical user patterns of another user operating another computing device communicatively connected to the cluster database.

[0069]

[0081] In some embodiments, the cluster and associated action sequence may be a default cluster having a default associated action sequence defined by the manufacturer of the computing device prior to user action. In some embodiments, a cluster of multiple alternative system action sequences that produce the same result may be generated based on the user action sequence, and the action sequences associated with the user-generated cluster may have a difficulty rating determined by the computing device based on associated contextual information measured and collected by the computing device during user action.

[0070]

[0082] 6 is a process flow diagram of a method 600 for suggesting to a user of a computing device more efficient action sequences for achieving a result, according to some embodiments. With reference to FIGS. 1-6 , method 600 may be implemented by a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402). In some embodiments, method 600 may be partially implemented within an external database (e.g., external storage 420) communicatively coupled to the computing device. For example, processes involving storing and updating clusters, action sequences, and difficulty levels may be partially executed on the processor of the external database at the direction of the computing device.

[0071]

[0083] At block 602, a user of a computing device may perform a user action sequence that produces a result or output "R." The user action sequence may include one or more actions that may be performed to achieve the result, and each action in the user action sequence may be associated with and / or stored with context information measured or otherwise determined by the computing device.

[0072]

[0084] At decision block 604, the computing device may determine whether the cluster database includes a cluster having the result R. The cluster database may be included as part of the computing device or may be located externally on a database server communicatively coupled to the computing device. The computing device may analyze or search the cluster database and compare the result R with the results of each cluster of multiple alternative system action sequences that produce the same result in the cluster database to determine whether any of the clusters of the multiple alternative system action sequences have the same result R.

[0073]

[0085] In response to determining that a cluster of multiple alternative system action sequences with the same outcome R does not exist in the cluster database (i.e., decision block 604="No"), the user computing device may create a new cluster of multiple alternative system action sequences with outcome R in the cluster database, as described in block 606. For example, the computing device may create a new cluster with outcome R, where the cluster includes a stored action sequence based on the user action sequence. Additionally, in creating the new cluster of multiple alternative system action sequences with outcome R, the computing device may assign a difficulty rating to the stored action sequence based on contextual information for each action in the user action sequence.

[0074]

[0086] In response to determining that a cluster of multiple alternative system action sequences having the same outcome R exists in the cluster database (i.e., decision block 604="yes"), the computing device may determine whether the user action sequence already exists in the cluster of multiple alternative system action sequences, as described in decision block 608. For example, the computing device may search the cluster having outcome R to determine whether the action sequence has the same action as the user action sequence.

[0075]

[0087] In response to determining that the user sequence is not within the cluster (i.e., decision block 608="No"), the user computing device may update, add, or otherwise store the user action sequence within a cluster of multiple alternative system action sequences having outcome R, as described in block 610. For example, the computing device may store the user action sequence in a cluster of multiple alternative system action sequences having outcome R, the cluster including one or more other action sequences that may be performed to achieve outcome R. Additionally, the computing device may perform level determination and assign a difficulty rating to the stored action sequence based on contextual information for each action within the user action sequence.

[0076]

[0088] After adding the user sequence to the cluster of multiple alternative system action sequences that produce the same result in block 610, the user computing device may determine whether there is an easier sequence of actions within the cluster of multiple alternative system action sequences in decision block 616. For example, the computing device may search or analyze the action sequences within the cluster and compare the difficulty ratings of the action sequences to the difficulty ratings of the user action sequence.

[0077]

[0089] In response to determining that a cluster of multiple alternative system action sequences with the same outcome R exists in the cluster database (i.e., decision block 608="yes"), the computing device may determine whether the user sequence has been performed a threshold number of times, as described at decision block 612. For example, the computing device may maintain a counter to determine how many times a user performs a user action sequence, and may perform an action based on decision block 612 when the counter value is reached. In some embodiments, the process at decision block 612 may be optional; instead, in response to determining that a cluster of multiple alternative system action sequences with the same outcome R exists in the cluster database (i.e., decision block 608="yes"), the computing device may determine whether an easier or more efficient action sequence exists in the cluster of multiple alternative system action sequences at decision block 616, as described.

[0078]

[0090] In response to determining that the user sequence has not been performed the threshold number of times (i.e., decision block 612="No"), the computing device may not provide a recommended action sequence or system suggestion to the user in block 614. For example, the computing device may refrain from providing the user with a more efficient action sequence for achieving outcome R until the user performs a less efficient user action sequence multiple times. Thereafter, the computing device may continue to monitor the user action sequences in block 602 as described.

[0079]

[0091] In response to determining that the user sequence has been performed a threshold number of times (i.e., decision block 612="Yes", or in embodiments where decision block 608 is not performed, decision block 612="Yes"), the computing device may determine whether an easier or more efficient action sequence exists within a cluster of multiple alternative system action sequences that produce the same result in decision block 616, as described.

[0080]

[0092] In response to determining that no easier or more efficient action sequence exists within the cluster of multiple alternative system action sequences (i.e., decision block 616="No"), the computing device may not provide a recommended action sequence or system suggestion to the user, as described in block 614. For example, the computing device may refrain from providing the action sequence to the user until the cluster of multiple alternative system action sequences has been updated with newer, more efficient action sequences (i.e., from a collective cluster database of user action sequences for multiple users) that may be more efficient than the user action sequence.

[0081]

[0093] In response to determining that an easier or more efficient action sequence exists within the cluster of multiple alternative system action sequences (i.e., decision block 616="Yes"), the computing device may provide a recommended action sequence or system suggestion to the user in block 618. For example, the computing device may determine that one or more action sequences comprising the cluster of multiple alternative system action sequences have a lower difficulty rating than the user action sequence, and may then provide at least one more efficient action sequence to the user via the display interface of the computing device. Thus, the user may be informed of a more efficient process for achieving outcome R for any subsequent attempts at achieving outcome R.

[0082]

[0094] At decision block 620, the computing device may determine whether the user selected an input to accept the recommended action sequence. As described at block 618, upon providing a lower difficulty rating for the recommended action sequence than the user action sequence, the computing device may display a prompt or selectable option to the user to allow the user to accept the recommended action sequence or assign a preference to the user action sequence over the recommended action sequence. The computing device may then continue to monitor the user action sequence at block 602 as described.

[0083]

[0095] In response to determining that the user selected the input to accept the recommended action sequence (i.e., decision block 620="Yes"), the user computing device may (i) update the user action sequence (or an equivalent action sequence having the same action in the cluster of multiple alternative system action sequences) with a higher difficulty rating than the recommended action sequence, (ii) update the recommended action sequence with a lower difficulty rating than the user action sequence, (iii) update both (i) and (ii), or (iv) do nothing. A user accepting the recommended action sequence may indicate that the user is likely to prefer the recommended action sequence for achieving outcome R in subsequent attempts to achieve outcome R, and that the user action sequence should not be recommended in any further attempts to achieve outcome R.

[0084]

[0096] In response to determining that the user selected an input to reject the recommended action sequence (i.e., decision block 620="No"), the user computing device may, in block 622, (i) update the user action sequence (or an equivalent action sequence having the same action in the cluster of multiple alternative system action sequences) with a lower difficulty rating than the recommended action sequence, and / or (ii) update the recommended action sequence with a higher difficulty rating than the user action sequence. A user rejecting a recommended action sequence may indicate that the user may prefer the user action sequence for achieving outcome R in a subsequent attempt to achieve outcome R, and that the recommended action sequence should not be recommended in any further attempts at achieving outcome R. The computing device may then continue to monitor the user action sequence in block 602, as described.

[0085]

[0097] In some embodiments, a user may be offered an easier and / or more efficient action sequence while the user is simultaneously performing an action sequence to achieve a certain result. For example, a user may perform several actions to achieve the result of mapping a destination, such as opening an internet browser application, entering address information, searching for the correct address, selecting the address to open it in a mapping application within the browser application, and then selecting an option to open the address directly in the mapping application that includes more features than a browser-based mapping application. During this process, the computing device may determine that the user is attempting to achieve the result of mapping a destination by recognizing that the first several steps are part of an action sequence of a particular cluster of multiple alternative system action sequences that have the result of mapping a destination. Before the user completes the above-mentioned action sequence, the computing device may offer the user the remaining steps of a more efficient action sequence to enable the user to achieve the result with fewer steps, less time, and / or less effort. For example, after entering address information into a browser application search bar, the computing device may determine that a more efficient action sequence exists and may offer the user a suggestion or recommendation to open the address information in the mapping application instead of the browser application before the user completes the action sequence.

[0086]

[0098] 7A is a process flow diagram of an example method 700a that may be performed by a processor of a computing device to suggest to a user a more efficient sequence of actions to achieve a result, according to various embodiments. 7B-7E are process flow diagrams of example operations 700b-700e that may be performed as part of the described method 700a to suggest to a user a more efficient sequence of actions to achieve a result, according to some embodiments. With reference to FIGS. 1-7E, method 700a and operations 700b-700e may be performed by a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402). In some embodiments, a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) may be configured to perform operations via processor-executable instructions stored on a non-transitory processor-readable medium (e.g., 220, 258, 420). The means for performing the operations of method 700a and each of operations 700b-700e may be a processor of system 100, 200, 300, such as processor 210, 212, 214, 216, 218, 252, 260, 422 described with reference to FIGS.

[0087]

[0099] At block 702, a processor of the receiving computing device may perform operations including recognizing a user action sequence that includes one or more user actions performed by a user to achieve a result. In the operations performed at block 702, the processor may monitor user interactions with the computing device, such as user interactions with a touch-sensitive display, button presses and movements on the device, to recognize when the user interaction leads to the computing device generating or creating a particular result, such as starting an application, activating a device function (e.g., a camera), accessing a file (e.g., photos), initiating or answering a phone call, etc. The computing device may record each action in a user action sequence performed by the user that resulted in a particular result. Accordingly, the processor may also associate each action with context and environmental information about the user action sequence and the particular result and store this information for use in determining a difficulty rating or level for the user action sequence. The means for performing the operations of block 702 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the action monitoring module 434.

[0088]

[0100] At block 704, a processor of the receiving computing device may perform operations including determining a first difficulty rating for the user action sequence. The computing device may determine the difficulty rating for the user action sequence based on context information associated with each action in the action sequence identified and stored at block 702. The difficulty rating may be based on the number of steps included in each user action sequence, the complexity of the user action sequence, the context and / or environmental conditions in which each of the multiple alternative user action sequences is more or less difficult, and other measures of difficulty. In some embodiments, the first difficulty rating may be determined by analyzing the total time to perform the user action sequence and / or the total number of actions in the user action sequence. Means for performing the operations of block 704 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) executing the level determination / difficulty rating module 438 and the context information module 436.

[0089] At block 706, the processor of the receiving computing device may perform operations including determining whether a cluster database contains a cluster of multiple alternative system action sequences for achieving the same particular result. The cluster database may be an organization of data in memory associated with different user interaction sequences that a user can use to cause the computing device to generate or produce the same particular result, where each system action sequence of the multiple alternative user action sequences produces the same result. In particular, the computing device may determine whether a cluster database exists that stores user action sequences that are different from the user action sequence recognized at block 702 but that, when executed, achieve the same result as the recognized user action sequence. In addition to storing multiple alternative user action sequences for achieving a given result (i.e., associating multiple user action sequences with a given result), the cluster database may store a difficulty rating associated with each of the multiple alternative user action sequences. As described, the difficulty rating may be based on the number of steps included in each user action sequence, the complexity of the user action sequence, the context and / or environmental conditions under which each of the multiple alternative user action sequences is more or less difficult, and other measures of difficulty. The means for performing the operations of block 706 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the cluster / sequence comparison module 440.

[0090]

[0101] At block 708, the processor of the receiving computing device may perform an operation including comparing the first difficulty rating to one or more difficulty ratings of a plurality of alternative user action sequences in response to determining that the cluster of a plurality of system action sequences exists in the cluster database. The computing device may compare the difficulty rating of the user action sequence to the difficulty ratings of the system action sequences in the cluster of a plurality of system action sequences to determine whether any of the system action sequences is more efficient for achieving a result or easier to use than the user action sequence. In some embodiments, comparing the first difficulty rating to one or more difficulty ratings of the plurality of alternative user action sequences may include determining whether the user action sequence has fewer actions than one or more of the plurality of alternative system action sequences. In some embodiments, comparing the first difficulty rating to one or more difficulty ratings of the plurality of alternative user action sequences may include determining whether the user action sequence is performed slower than the time required to perform any of the plurality of alternative user action sequences. The means for performing the operations of block 708 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the cluster / sequence comparison module 440.

[0091]

[0102] At block 710, the processor of the receiving computing device may perform an operation including displaying, via a display interface of the computing device, one or more of a plurality of alternative system action sequences having a difficulty rating lower than the first difficulty rating. The computing device may display at least one system action sequence to a user to inform the user of a more efficient course of action that may be used in a subsequent attempt to achieve a result instead of the user action sequence. In some embodiments, displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating may include displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence requires more actions than the one or more system action sequences. In some embodiments, displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating may include displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence takes longer to perform or complete than the time to perform any of the plurality of alternative user action sequences. Means for performing the operations of block 710 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) executing the interface display module 432.

[0092]

[0103] 7B illustrates operations 700b that may be performed as part of a method 700a for suggesting to a user a more efficient action sequence for achieving a result, according to some embodiments. Referring to FIGS. 1-7B, following the operations at block 706, a processor of a computing device (e.g., 100, 320, 402) may perform operations at block 712, including generating a new cluster of multiple alternative system action sequences that includes the user action sequence, in response to determining that no cluster of multiple alternative system action sequences that produce the same result exists in the cluster database. As part of the process of generating a cluster of multiple alternative system action sequences that produce the same result that includes the user action sequence, the processor of the computing device may determine a difficulty rating for the user action sequence and store the user action sequences in the generated cluster of multiple alternative system action sequences that produce the same result in the cluster database in association with the determined difficulty rating. The means for performing the operations of block 712 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the level determination / difficulty rating module 438 and the cluster generation / update module 442.

[0093]

[0104] Following the operations in block 712, the processor may perform the operations in block 708 as described.

[0094]

[0105] 7C illustrates operations 700c that may be performed as part of a method 700a for suggesting to a user a more efficient action sequence for achieving a result, according to some embodiments. Referring to FIGS. 1-7C, following the operations at block 706, a processor of a computing device (e.g., 100, 320, 402) may perform operations at block 714, including determining whether a system action sequence of the plurality of alternative user action sequences includes one or more user actions of the user action sequence, in response to determining that a cluster of multiple alternative system action sequences exists in the cluster database that produces the same result. In other words, the computing device may analyze the cluster of multiple alternative system action sequences to determine whether a system action sequence having the same action of the user action sequence already exists in the cluster of multiple alternative system action sequences. The means for performing the operations of block 714 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the level determination / difficulty rating module 438 and the cluster / sequence comparison module 440.

[0095]

[0106] In block 716, a processor of a computing device (e.g., 100, 320, 402) may perform operations including updating a cluster of the plurality of alternative system action sequences in a cluster database with the user action sequence in response to determining that a system action sequence of the one or more system action sequences does not include one or more user actions of the user action sequences. Means for performing the operations of block 716 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of the computing device (e.g., 100, 320, 402) executing the cluster generation / update module 442.

[0096]

[0107] Following the operation at block 716, the processor may perform the operation at block 708 of the method 700 as described.

[0097]

[0108] 7D illustrates an operation 700d that may be performed as part of a method 700a for suggesting to a user a more efficient sequence of actions for achieving a result, according to some embodiments. Referring to FIGS. 1-7D , following the operation at block 706, a processor of a computing device (e.g., 100, 320, 402) may perform an operation at block 718, including determining whether a user action sequence has been performed a threshold number of times. The computing device may maintain a counter to determine whether a user repeatedly performs a particular user action sequence, and may initially provide the user with a potentially more efficient system action sequence only after the counter threshold has been reached. Means for performing the operation of block 718 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) executing the action monitoring module 434.

[0098]

[0109] After the operations of block 718, the processor may perform the operations of block 708 as described, where, in response to determining that the user action sequence has been performed a threshold number of times, comparing the first difficulty rating to one or more difficulty ratings of a plurality of alternative system action sequences is performed.

[0099]

[0110] 7E illustrates an operation 700e that may be performed as part of a method 700a for suggesting to a user a more efficient action sequence for achieving a result, according to some embodiments. Referring to FIGS. 1-7E, following the operation at block 710, a processor of a computing device (e.g., 100, 320, 402) may perform an operation at block 720, including receiving a user selection indicating that a user action sequence is preferred by the user over one or more displayed system action sequences having a lower difficulty rating. The user may select, via a display interface of the computing device, an input or selection indicating that a system action sequence provided to the user with a lower difficulty rating than the user action sequence is not a preferred way to achieve a result and therefore should not be recommended again when the user subsequently and / or repeatedly performs the user action sequence. The means for performing the operations of block 720 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the interface display module 432.

[0100]

[0111] At block 722, a processor of a computing device (e.g., 100, 320, 402) may perform operations including updating a cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences. In some embodiments, updating a cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences may include changing the first difficulty rating to a lower difficulty rating. In some embodiments, updating a cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences may include changing one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating. The means for performing the operations of block 714 may include a processor (e.g., 210, 212, 214, 216, 218, 252, 260, 422) of a computing device (e.g., 100, 320, 402) that executes the cluster generation / update module 442.

[0101]

[0112] Various embodiments (including, but not limited to, those described above with reference to FIGS. 1-7E ) may be implemented in a wide variety of computing systems, including a laptop computer 800, an example of which is shown in FIG. 8 . Referring to FIGS. 1-8 , the laptop computer may include a touchpad touch surface 817 that acts as a pointing device for the computer and may therefore receive drag, scroll, and flick gestures similar to those implemented on the above-described computing devices equipped with touchscreen displays. The laptop computer 800 typically includes a processor 802 coupled to volatile memory 812 and a large-capacity non-volatile memory, such as a flash memory disk drive 813. Additionally, the computer 800 may have one or more antennas 808 for transmitting and receiving electromagnetic radiation, which may be connected to a wireless data link and / or a cellular telephone transceiver 816 coupled to the processor 802. The computer 800 may also include a floppy disk drive 814 and a compact disc (CD) drive 815 coupled to the processor 802. Laptop computer 800 may include a touchpad 817, a keyboard 818, and a display 819, all coupled to processor 802. Other configurations of computing devices may also be used with various embodiments, including a computer mouse or trackball coupled to the processor (e.g., via a USB input), as is well known.

[0102]

[0113] Figure 9 is a component block diagram of a network computing device 900, such as a base station (e.g., base station 350), suitable for use in various embodiments. Such a network computing device (e.g., a base station such as a gNB or eNB) may include at least the components shown in Figure 9. With reference to Figures 1-9, the network computing device 900 may typically include a processor 901 coupled to volatile memory 902 and large-capacity non-volatile memory such as a disk drive 903.

[0103]

[0114] The network computing device 900 may also include a peripheral memory access device, such as a floppy disk drive, compact disk (CD), or digital video disk (DVD) drive 906, coupled to the processor 901. The network computing device 900 may also include a network access port 904 (or interface) coupled to the processor 901 for establishing a data connection with a network, such as the Internet and / or a local area network coupled to other system computers and servers.

[0104]

[0115] The networked computing device 900 may include one or more antennas 907 for transmitting and receiving electromagnetic radiation, which may be connected to a wireless communications link. The networked computing device 900 may include additional access ports, such as USB, Firewire, Thunderbolt, etc., for coupling to peripherals, external memory, or other devices.

[0105]

[0116] FIG. 10 is a component block diagram of a computing device 1000 suitable for use in various embodiments. With reference to FIGS. 1-10 , various embodiments may be implemented on various computing devices 1000 (e.g., computing devices 120, 320, 402), an example of which is shown in FIG. 10 in the form of a smartphone. The computing device 1000 may include a first SoC 202 (e.g., an SoC-CPU) coupled to a second SoC 204 (e.g., a 5G-enabled SoC). The first SoC 202 and the second SoC 204 may be coupled to an internal memory 1016, a display 1012, and a speaker 1014. The first SoC 202 and the second SoC 204 may also be coupled to at least one SIM 268 and / or SIM interface, which may store information supporting a first 5G NR subscription and a second 5G NR subscription that support services on a 5G non-standalone (NSA) network.

[0106]

[0117] Computing device 1000 may include an antenna 1004 for transmitting and receiving electromagnetic radiation, which may be connected to a wireless transceiver 266 coupled to one or more processors in first SoC 202 and / or second SoC 204. Computing device 1000 may also include menu selection buttons or rocker switches 1020 for receiving user input.

[0107]

[0118] The computing device 1000 also includes a sound encoding / decoding (codec) circuit 1010 that digitizes sound received from the microphone into data packets suitable for wireless transmission and decodes the received sound data packets to generate analog signals that are provided to a speaker to generate sound. One or more of the processors, wireless transceiver 266, and codec 1010 in the first SoC 202 and second SoC 204 may also include digital signal processor (DSP) circuitry (not separately shown).

[0108]

[0119] Various embodiments may be implemented in a variety of computing devices, such as wearable computing devices. FIG. 11 illustrates an exemplary wearable computing device in the form of a smartwatch 1100 according to some embodiments. The smartwatch 1100 may include a processor 1102 coupled to internal memories 1104 and 1106. The internal memories 1104 and 1106 may be volatile or non-volatile, and may be secure and / or encrypted, or non-secure and / or unencrypted, or any combination thereof. The processor 1102 may also be coupled to a touchscreen display 1120, such as a resistive-sensing touchscreen, a capacitive-sensing touchscreen, an infrared-sensing touchscreen, or the like. Additionally, the smartwatch 1100 may have one or more antennas 1108 for transmitting and receiving electromagnetic radiation, which may be connected to one or more wireless data links 1112, such as one or more Bluetooth® transceivers, Peanut transceivers, Wi-Fi transceivers, ANT+ transceivers, etc., which may be coupled to the processor 1102. The smartwatch 1100 may also include physical virtual buttons 1122 and 1110 for receiving user input, as well as a slide sensor 1116 for receiving user input.

[0109]

[0120] The touchscreen display 1120 may be coupled to a touchscreen interface module configured to receive signals from the touchscreen display 1120 indicative of the location on the screen where a user's fingertip or stylus is touching the surface, and to output information regarding the coordinates of the touch event to the processor 1102. Further, the processor 1102 may be configured with processor-executable instructions for correlating images presented on the touchscreen display 1120 with the locations of touch events received from the touchscreen interface module to detect when a user interacts with a graphical interface icon, such as a virtual button.

[0110]

[0121] The processor 1102 may be any programmable microprocessor, microcomputer, or one or more multi-processor chips that can be configured by software instructions (applications) to perform various functions, including those of various embodiments. In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in internal memory before being accessed and loaded into the processor 1102. The processor 1102 may include sufficient internal memory to store application software instructions. In many devices, the internal memory may be volatile memory, or non-volatile memory such as flash memory, or a mixture of both. For purposes of this description, general references to memory refer to memory accessible by the processor 1102, including internal memory or removable memory plugged into the mobile device and memory within the processor 1102 itself.

[0111]

[0122] The processors of computer 800, network computing device 900, computing device 1000, and smartwatch 1100 may be any programmable microprocessor, microcomputer, or one or more multi-processor chips that may be configured by software instructions (applications) to perform various functions, including those of various embodiments described below. In some mobile devices, multiple processors may be provided, such as one processor in SoC 204 dedicated to wireless communication functions and one processor in SoC 202 dedicated to running other applications. Software applications may be stored in memory 220, 1016 before they are accessed and loaded into the processor. The processors may include sufficient internal memory to store application software instructions.

[0112]

[0123] Example implementations are described in the following paragraphs. Although some of the following implementations are described with reference to example methods, further example implementations may include the example methods discussed in the following paragraphs implemented by a computing device including a processor configured with processor-executable instructions to perform the operations of the methods of the following implementations. May include the example methods described in the following paragraphs implemented by a computing device including means for performing the functions of the methods of the following examples. The example methods described in the following paragraphs may be implemented as a non-transitory processor-readable storage medium storing processor-executable instructions configured to cause a processor of a computing device to perform the operations of the methods of the following examples.

[0113]

[0124] Example 1. A method executed by a processor of a computing device for suggesting more efficient action sequences to a user, the method comprising: recognizing a user action sequence including one or more user actions performed by a user to achieve a result; determining a first difficulty rating for the user action sequence; determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences producing a result; in response to determining that the cluster of the plurality of system action sequences exists in the cluster database, comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences; and displaying via a display interface of the computing device one or more system action sequences having a difficulty rating lower than the first difficulty rating.

[0114]

[0125] Example 2. The method of example 1, further comprising, in response to determining that a cluster of the plurality of system action sequences that produces the result does not exist in the cluster database, generating a new cluster that includes the user action sequence.

[0115]

[0126] Example 3. The method of either Example 1 or Example 2, further comprising: in response to determining that a cluster of a plurality of system action sequences exists in the cluster database, determining whether one system action sequence of the one or more system action sequences includes one or more user actions of the user action sequence; and in response to determining that one system action sequence of the one or more system action sequences does not include one or more user actions of the user action sequence, updating the cluster database with the user action sequence.

[0116]

[0127] Example 4. The method of any one of Examples 1 to 3, wherein comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences includes determining whether the user action sequence has fewer actions than the one or more system action sequences, and displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating includes displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence has fewer actions than the one or more system action sequences.

[0117]

[0128] Example 5. The method of any one of Examples 1 to 4, wherein comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences includes determining whether the user action sequence executes slower than the time to execute any of the one or more system action sequences, and displaying via a display interface of the computing device one or more system action sequences having a difficulty rating lower than the first difficulty rating includes displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence executes slower than the time to execute any of the one or more system action sequences.

[0118]

[0129] Example 6. The method of any one of Examples 1 to 5, further comprising determining whether the user action sequence has been performed a threshold number of times, wherein in response to determining that the user action sequence has been performed the threshold number of times, comparing the first difficulty rating with one or more difficulty ratings of one or more system action sequences is performed.

[0119]

[0130] Example 7. The method of any one of Examples 1 to 6, further comprising receiving a user selection indicating that a user action sequence is preferred by the user over one or more displayed system action sequences having a lower difficulty rating, and updating the cluster database by storing the user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences.

[0120]

[0131] Example 8. The method of example 7, wherein updating the cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences includes changing the first difficulty rating to the lower difficulty rating.

[0121]

[0132] Example 9. The method of Example 7, wherein updating the cluster database by storing a user action sequence having a difficulty rating lower than one or more difficulty ratings of the displayed one or more system action sequences includes changing one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating.

[0122]

[0133] Example 10. The method of any one of Examples 1 to 9, wherein the user action sequence includes context and environment information associated with each of the one or more user actions.

[0123]

[0134] As used herein, terms such as “component,” “module,” and “system” are intended to include, but are not limited to, computer-related entities, such as hardware, firmware, a combination of hardware and software, software, or software in execution, configured to perform particular operations or functions. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and / or a computer. By way of example, both an application running on a computing device and the computing device may be referred to as a component. One or more components may reside within a process and / or thread of execution, and a component may be localized on one processor or core and / or distributed among two or more processors or cores. In addition, these components may execute from various non-transitory computer-readable media having various instructions and / or data structures stored thereon. Components may communicate via local and / or remote processes, function or procedure calls, electronic signals, data packets, memory read / writes, and other known network-, computer-, processor-, and / or process-related communication methods.

[0124]

[0135] Several different cellular and mobile communication services and standards are available or are contemplated in the future, all of which may implement and benefit from various embodiments, such as, for example, Third Generation Partnership Project (3GPP), LTE systems, third generation wireless mobile communication technology (3G), fourth generation wireless mobile communication technology (4G), fifth generation wireless mobile communication technology (5G), and later generations of 3GPP technologies, Global System for Mobile Communications (GSM), Universal Mobile Telecommunications System (UMTS), 3GSM, General Packet Radio Service (GPRS), Code Division Multiple Access (CDMA) systems (e.g., cdmaOne, CDMA1020™), Enhanced Data Rates for GSM Evolution (EDGE), Advanced Mobile Phone System (AMPS), Digital AMPS (IS-136 / TDMA), Evolution Data Optimized (EV-DO), Digital Enhanced Cordless Telecommunications (DECT), and others. Telecommunications standards and technologies include Wi-Fi, Worldwide Interoperability for Microwave Access (WiMAX), Wireless Local Area Network (WLAN), Wi-Fi Protected Access I & II (WPA, WPA2), and Integrated Digital Enhanced Network (iDEN). Each of these technologies involves, for example, the transmission and reception of voice, data, signaling, and / or content messages. It should be understood that any reference to terminology and / or technical details relating to a particular telecommunications standard or technology is for illustrative purposes only and does not limit the scope of the claims to any particular communications system or communications technology unless specifically recited in the claim language.

[0125]

[0136] The various embodiments shown and described are provided merely as examples to illustrate various features of the claims. However, features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiment and may be used with or combined with other embodiments shown and described. Furthermore, the claims are not limited by any single exemplary embodiment. For example, one or more of the method operations may be substituted for or combined with one or more other method operations.

[0126]

[0137] The above method descriptions and process flow diagrams are provided as illustrative examples only and do not require or imply that the operations of the various embodiments must be performed in the order presented. As will be understood by one of ordinary skill in the art, the order of operations in the above-described embodiments may be performed in any order. Terms such as "thereafter," "then," and "next" do not limit the order of operations. These terms are used merely to guide the reader through the method description. Furthermore, any reference to a claim element in the singular, for example, using the article "a," "an," or "the," should not be construed as limiting the element to the singular.

[0127]

[0138] The various illustrative logical blocks, modules, circuits, and algorithmic operations described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or a combination of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the claims.

[0128]

[0139] The hardware used to implement the various exemplary logic, logic blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed using general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (TCU ASICs), field-programmable gate arrays (FPGAs) or other programmable logic devices, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry specific to a given function.

[0129]

[0140] In one or more embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or a non-transitory processor-readable medium. Operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module that may reside on a non-transitory computer-readable storage medium or a non-transitory processor-readable storage medium. A non-transitory computer-readable storage medium or a non-transitory processor-readable storage medium may be any storage medium that can be accessed by a computer or processor. By way of example, and not limitation, such non-transitory computer-readable medium or a non-transitory processor-readable medium may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. As used herein, disk and disc include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where disks typically reproduce data magnetically while discs reproduce data optically using lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one, or any combination or set of code and / or instructions on a non-transitory processor-readable medium and / or a non-transitory computer-readable medium, which may be embodied in a computer program product.

[0130]

[0141] The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments without departing from the scope of the claims. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.

Claims

1. 1. A computing device comprising: The display and a processor coupled to the display, the processor comprising: Recognizing a user action sequence including one or more user actions performed by a user to achieve a result; determining a first difficulty rating for the sequence of user actions; determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences producing the result; responsive to determining that a cluster of the plurality of system action sequences exists in the cluster database, comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences; A computing device configured to display one or more system action sequences having a difficulty rating lower than the first difficulty rating.

2. the processor:

10. The computing device of claim 1, further configured to, in response to determining that a cluster of multiple system action sequences that produces the result does not exist in the cluster database, generate a new cluster that includes the user action sequence.

3. the processor: in response to determining that a cluster of the plurality of system action sequences exists in the cluster database, determining whether a system action sequence of the one or more system action sequences includes the one or more user actions of the user action sequences; 2. The computing device of claim 1, further configured to: in response to determining that one system action sequence of the one or more system action sequences does not include the one or more user actions of the user action sequence, update the cluster database with the user action sequence.

4. the processor: comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences by determining whether the user action sequence has fewer actions than the one or more system action sequences; 2. The computing device of claim 1, further configured to: in response to determining that the user action sequence has fewer actions than the one or more system action sequences, display the one or more system action sequences having a difficulty rating lower than the first difficulty rating.

5. the processor: comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences by determining whether the user action sequence is executed slower than the time to execute any of the one or more system action sequences; 2. The computing device of claim 1, further configured to: in response to determining that the user action sequence will be executed slower than the time for executing any of the one or more system action sequences, display the one or more system action sequences having a difficulty rating lower than the first difficulty rating.

6. the processor: determining whether the sequence of user actions has been performed a threshold number of times; 10. The computing device of claim 1, further configured to: in response to determining that the user action sequence has been performed a threshold number of times, compare the first difficulty rating to one or more difficulty ratings of the one or more system action sequences.

7. the processor: receiving a user selection indicating that the user action sequence is preferred by the user over the displayed one or more system action sequences having a lower difficulty rating; 10. The computing device of claim 1, further configured to update the cluster database by storing the user action sequences having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences.

8. The computing device of claim 7 , wherein the processor is further configured to update the cluster database by changing the first difficulty rating to a lower difficulty rating.

9. 8. The computing device of claim 7, wherein the processor is further configured to update the cluster database by changing the one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating.

10. The computing device of claim 1 , wherein the user action sequence includes context and environment information associated with each of the one or more user actions.

11. 1. A method executed by a processor of a computing device for suggesting more efficient action sequences to a user, the method comprising: Recognizing a user action sequence comprising one or more user actions performed by the user to achieve a result; determining a first difficulty rating for the sequence of user actions; determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences producing the result; responsive to determining that a cluster of the plurality of system action sequences exists in the cluster database, comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences; displaying, via a display interface of the computing device, one or more system action sequences having a difficulty rating lower than the first difficulty rating; A method comprising:

12. 12. The method of claim 11, further comprising, in response to determining that a cluster of multiple system action sequences that produces the result does not exist in the cluster database, generating a new cluster that includes the user action sequence.

13. responsive to determining that a cluster of the plurality of system action sequences exists in the cluster database, determining whether a system action sequence of the one or more system action sequences includes the one or more user actions of the user action sequences; 12. The method of claim 11, further comprising: in response to determining that one system action sequence of the one or more system action sequences does not include the one or more user actions of the user action sequence, updating the cluster database with the user action sequence.

14. comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences includes determining whether the user action sequence has fewer actions than the one or more system action sequences; 12. The method of claim 11, wherein displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating via the display interface of the computing device comprises displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence has fewer actions than the one or more system action sequences.

15. comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences includes determining whether the user action sequence is executed slower than a time to execute any of the one or more system action sequences; 12. The method of claim 11, wherein displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating via the display interface of the computing device comprises displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence will be performed later than the time for performing any of the one or more system action sequences.

16. determining whether the sequence of user actions has been performed a threshold number of times; 12. The method of claim 11, wherein, in response to determining that the user action sequence has been performed a threshold number of times, comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences is performed.

17. receiving a user selection indicating that the user action sequence is preferred by the user over the displayed one or more system action sequences having a lower difficulty rating; 12. The method of claim 11, further comprising: updating the cluster database by storing the user action sequences having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences.

18. 18. The method of claim 17, wherein updating the cluster database by storing the user action sequence having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences comprises changing the first difficulty rating to a lower difficulty rating.

19. 18. The method of claim 17, wherein updating the cluster database by storing the user action sequence having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences comprises changing the one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating.

20. The method of claim 11 , wherein the user action sequence includes context and environment information associated with each of the one or more user actions.

21. 1. A computing device comprising: means for recognizing a user action sequence comprising one or more user actions performed by a user to achieve a result; means for determining a first difficulty rating for the sequence of user actions; means for determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences producing the result; means for comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences in response to determining that a cluster of the plurality of system action sequences exists in the cluster database; means for displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating; A computing device comprising:

22. 22. The computing device of claim 21, further comprising: means for generating a new cluster including the user action sequence in response to determining that a cluster of multiple system action sequences that produces the result does not exist in the cluster database.

23. means for determining, in response to determining that a cluster of the plurality of system action sequences exists in the cluster database, whether a system action sequence of the one or more system action sequences includes the one or more user actions of the user action sequences; 22. The computing device of claim 21, further comprising: means for updating the cluster database with the user action sequence in response to determining that a system action sequence of the one or more system action sequences does not include the one or more user actions of the user action sequence.

24. the means for comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences comprises means for determining whether the user action sequence has fewer actions than the one or more system action sequences; 22. The computing device of claim 21, wherein the means for displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating comprises: means for displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence has fewer actions than the one or more system action sequences.

25. the means for comparing the first difficulty rating with one or more difficulty ratings of the one or more system action sequences comprises means for determining whether the user action sequence is executed slower than the time to execute any of the one or more system action sequences; 22. The computing device of claim 21, wherein the means for displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating comprises: means for displaying the one or more system action sequences having a difficulty rating lower than the first difficulty rating in response to determining that the user action sequence will be performed slower than the time for performing any of the one or more system action sequences.

26. means for determining whether the sequence of user actions has been performed a threshold number of times; 22. The computing device of claim 21, wherein the means for comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences comprises means for comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences in response to determining that the user action sequence has been performed a threshold number of times.

27. means for receiving a user selection indicating that the user action sequence is preferred by the user over the displayed one or more system action sequences having a lower difficulty rating; 22. The computing device of claim 21, further comprising: means for updating the cluster database by storing the user action sequences having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences.

28. 28. The computing device of claim 27, wherein the means for updating the cluster database by storing the user action sequence having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences comprises means for changing the first difficulty rating to a lower difficulty rating.

29. 28. The computing device of claim 27, wherein the means for updating the cluster database by storing the user action sequences having a difficulty rating lower than the one or more difficulty ratings of the displayed one or more system action sequences comprises means for changing the one or more difficulty ratings of the displayed one or more system action sequences to be lower than the first difficulty rating.

30. A non-transitory processor-readable medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform operations, the operations comprising: Recognizing a user action sequence comprising one or more user actions performed by a user to achieve a result; determining a first difficulty rating for the sequence of user actions; determining whether a cluster of a plurality of system action sequences exists in a cluster database, each system action sequence of the one or more system action sequences producing the result; responsive to determining that a cluster of the plurality of system action sequences exists in the cluster database, comparing the first difficulty rating to one or more difficulty ratings of the one or more system action sequences; displaying one or more system action sequences having a difficulty rating lower than the first difficulty rating; 1. A non-transitory processor-readable medium comprising: